这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
安装
windows
- 前往 go.dev/ 或者 go语言中文网 下载最新的go安装包,双击安装即可
- (可选)代理配置
# 配置 GOPROXY 环境变量
$env:GOPROXY = "https://proxy.golang.com.cn,direct"
# 还可以设置不走 proxy 的私有仓库或组,多个用逗号相隔(可选)
$env:GOPRIVATE = "git.mycompany.com,github.com/my/private"
初识
- Go语言是一门编译型语言
- Go语言的编译速度很快
- Go通过结构体和接口实现某些面向对象的特性
- Go会自动格式化代码的风格
- Go的创建协程很方便
- Go通过channel来传递数据,而不是通过共享内存
Go的包与项目依赖
- 最初的Go想要依赖其他代码需要将所有的代码放到项目目录下,这会导致项目代码与依赖代码混乱,而且不方便控制依赖包的版本。在1.11版本中,引入了包的概念,可以通过go.mod来引入包并控制包的版本,不需要将包的代码放在项目目录之下,强化了Go包的管理。
- 每个项目中一个目录为一个包,其中main表明这个包会被编译成一个可执行程序
类型
| 类型 | 长度(字节) | 默认值 | 说明 | 比较性 |
|---|---|---|---|---|
| bool | 1 | false | 可比较 | |
| byte | 1 | 0 | uint8 | 可比较 |
| rune | 4 | 0 | Unicode Code Point, int32 | 可比较 |
| int, uint | 4或8 | 0 | 32 或 64 位 | 可比较 |
| int8, uint8 | 1 | 0 | -128 ~ 127, 0 ~ 255,byte是uint8 的别名 | 可比较 |
| int16, uint16 | 2 | 0 | -32768 ~ 32767, 0 ~ 65535 | 可比较 |
| int32, uint32 | 4 | 0 | -21亿~ 21亿, 0 ~ 42亿,rune是int32 的别名 | 可比较 |
| int64, uint64 | 8 | 0 | 可比较 | |
| float32 | 4 | 0.0 | 可比较 | |
| float64 | 8 | 0.0 | 可比较 | |
| complex64 | 8 | 可比较 | ||
| complex128 | 16 | 可比较 | ||
| uintptr | 4或8 | 以存储指针的 uint32 或 uint64 整数 | 可比较 | |
| array | 值类型 | 不可比较 | ||
| struct | 值类型 | 取决于字段类型 | ||
| string | "" | UTF-8 字符串 | 可比较 | |
| slice | nil | 引用类型 | 不可比较 | |
| map | nil | 引用类型,key必须可比较,如果想要使用不可比较需写转换函数 | 不可比较 | |
| channel | nil | 引用类型 | 可比较 | |
| interface | nil | 接口 | 可比较 | |
| function | nil | 函数 | 不可比较 |
- Go的语言类型很强,所有的转换都需要显示转换