Go 学习笔记1-Go基础
目录
Go 语言不是面向对象语言。
Go 语言的三位创始人:
(从左到右分别是 Robert Griesemer、Rob Pike 和 Ken Thompson)
Go 语言历史年表
时间 | 事件 |
---|---|
2007年9月 | 三位创始人进行了一次讨论会 |
2008年 | 肯·汤普森实现了第一版 Go 编译器 |
2009年11月10日 | 谷歌宣布开源 Go 语言,这一天为 Go 诞生日 |
2012年3月 | Go 1.0 发布,并宣布 Go 编译器永远兼容旧代码 |
2014年 | Go 1.4 发布,最后一个编译器和运行时由 C 语言实现的版本 |
2015年 | Go 1.5 发布,实现自举,大幅降低 GC 延迟 |
2018年 | Go 1.11 发布,引入新的包管理机制:go module |
2021年 | Go 1.16 发布,go module 称为默认包管理机制 |
2022年3月 | Go 1.18 发布,支持泛型 |
如今,Go 语言基本每年发布两个版本,一般在 2 月和 8 月。
1,Go 下载
去下载页面下载:
解压后得到名为 go 的目录:
- Linux:放在
/usr/local/
目录下- 在
$HOME/.profile
文件末尾添加export PATH=$PATH:/usr/local/go/bin
- 然后执行
source ~/.profile
- 最后执行
go version
查看是否安装成功
- 在
- Window:可放在
C:\
盘
对于 Ubuntu 中卸载自带(apt-get install
) Go 的方式:
sudo apt-get remove golang-go
sudo apt-get remove --auto-remove golang-go
Vim Go 插件
2,Go 代码的执行顺序
Go 程序的入口函数是 main.main,即 main 包中的 main 函数。
package main
func init() {
}
func main() {
// 用户层执行逻辑
... ...
}
- main 函数是 Go 程序的入口函数
- init 函数与 main 函数都是无参数无返回值的函数
- init 函数比 main 函数先执行,一般用于包的初始化
- init 函数不能被开发者手工调用,只能被 Go 程序默认调用
- 一个包中可以有多个同名的 init 函数,它们的执行顺序是根据其声明次序依次调用
Go 包的初始化次序如下:
- Go 会根据包的导入顺序依次的初始化每个包
- 包的初始化过程中,采用深度优先原则
- 每个包中,除了 import 之外,会按照“常量->变量->init函数”的顺序进行初始化
- 如果某个包被多个包 import,那么该包只会被初始化一次
3,Go 常量与变量
在 Go 语言中,常量和变量在使用之前,必须要先进行声明。
Go 语言的变量可以分为两类:
- 包级变量,是在包级别可见的变量。如果是导出变量(大写字母开头),那么这个包级变量也可以被视为全局变量
- 局部变量,是 Go 函数或方法体内声明的变量,仅在函数或方法体内可见
常量的声明方式
const a = 1
const Pi float64 = 3.14159265358979323846 // 单行常量声明
// 以const代码块形式声明常量
const (
size int64 = 4096
i, j, s = 13, 14, "bar" // 单行声明多个常量
)
iota // go 中的特殊常量,常用于枚举
变量的声明方式
var a int // 显示指定类型,不进行初始化,值为类型的默认值
var a int = 3 // 显示指定类型,并进行初始化
var a = 3 // 不显示指定类型,具体类型由 GO 自行推断
// 整型值的默认类型 int
// 浮点值的默认类型为 float64
// 复数值的默认类型为 complex128
// 布尔值的默认类型是 bool
// 字符值默认类型是 rune
// 字符串值的默认类型是 string
a := 3 // 短变量声明,只允许出现在函数内部
// 变量声明块
var (
a int = 128
b int8 = 6
s string = "hello"
c rune = 'A'
t bool = true
)
// 一行中声明多个变量
var a, b, c int = 5, 6, 7
var (
a, b, c int = 5, 6, 7
c, d, e rune = 'C', 'D', 'E'
)
// 声明多个不同类型的变量
var a, b, c = 12, 'A', "hello"
a, b, c := 12, 'A', "hello" // 短变量声明方式
(完。)
文章作者 @码农加油站
上次更改 2022-06-01