变量、常量、原生数值类型

142 阅读2分钟

【知识碎片】

声明方式

  • 普通声明
  • 短变量声明
  • 省略类型声明
  • 包级变量声明形式只能使用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值。