【知识碎片】
声明方式
- 普通声明
- 短变量声明
- 省略类型声明
- 包级变量声明形式只能使用var,不能使用短变量,可省略类型。
- 局部变量声明,延迟初始化的采用通用方式,显示初始化的局部变量使用短变量声明方式。 分支控制使用短变量
声明聚类
就近原则
变量初始化
- Go 会默认给变量初始化零值,如果是自定义变量需要保证零值可用
- 声明并同时显示初始化
变量作用域、变量屏蔽
- 预定义标识符可以被覆盖;
- 分支控制语句都有隐式代码块,短变量声明方式出了该范围就失效,但闭包可以引用外部变量。
go 原生数据类型
整形
- 有符号整形 int8 int16 int32 int64,若int 64位机器是 int64,32位机器是int32
- 无符号整形 uint8 uint16 uint32 uint64
Go 同样采用2的补码作为比特位编码方法,补码=原码取反+1; 在计算机内规定用10000000代表-128,所以127取反+1=10000001=-127
浮点型(尽量不用) float32 float64
负数 complex64 -> float32,float32 complex128 -> float64, float64
字面值和格式化输出
var a int8 = 59
fmt.Printf("%b\n", a) //输出二进制:111011
fmt.Printf("%d\n", a) //输出十进制:59
fmt.Printf("%o\n", a) //输出八进制:73
fmt.Printf("%O\n", a) //输出八进制(带0o前缀):0o73
fmt.Printf("%x\n", a) //输出十六进制(小写):3b
fmt.Printf("%X\n", a) //输出十六进制(大写):3B
常量
声明方式
const c1 int8 = 1
const (
c2 int8 = 2
c3, c4 = 128, 1256
)
无类型常量与隐式转型
无类型常量在做运算时会隐式转换为与其运算的类型
枚举
- 隐式重复前一个非空表达式
- 可通过
iota实现递增, iota 值为在const代码块中第i行就是i值。