Go——变量和常量
1、变量
变量:使用一个名称来绑定一块内存地址,该内存地址中存放的数据类型由定义变量时指定的类型决定,该内存地址里面存放的内容可以改变。
1.1 显示的完整声明
var varName dataType [ = value ]
- 关键字var用于变量声明。
- varName是变量名标识符。
- dataType是l.3节介绍的基本类型。
- value是变量的初始值,初始值可以是字面量,也可以是其他变量名,还可以是一个表达式;如果不指定初始值,则Go默认将该变量初始化为类型的零值。
Go的变量声明后就会立即为其分配空间。
var a int = 1
var a int = 2 * 3
var a int = b
1.2 短类型声明
varName := value
- :=声明只能出现在函数内(包括在方法内)。
- 此时Go编译器自动进行数据类型推断。
Go支持多个类型变量同时声明并赋值。例如:
a, b := 1, “hello”
变量具有如下几个属性:
- 变量名:即自定义标识符
- 变量值:变量实际指向的是地址里存放的值,变量的值具体怎么解析是由变量的类型来决定的。在 初始化变量值时,我们可以使用字面量,也可以使用其他的变量名。
- 变量存储和生存期:Go语言提供自动内存管理,通常程序员不需要特别关注变量的生存期和存放位置。编译器使用栈逃逸技术能够自动为变量分配空间:可能在栈上,也可能在堆上。
- 类型信息:类型决定了该变量存储的值怎么解析,以及支持哪些操作和运算,不同类型的变量支持的操作和运算集是不一样的。
- 可见性和作用域:Go内部使用统一的命名空间对变量进行管理,每个变量都有一个唯一的名字,包名是这个名字的前缀。
2、常量
常量使用一个名称来绑定一块内存地址,该内存地址中存放的数据类型由定义常量时指定的类型决定,而且该内存地址里面存放的内容不可以改变。Go中常量分为布尔型、字符串型和数值型常量。常量存储在程序的只读段里(.rodata section)。
预声明标识符iota用在常量声明中,其初始值为0。一组多个常量同时声明时其值逐行增加,iota可以看作自增的枚举变量,专门用来初始化常量。
//类似美剧的iota
const (
c0 = iota //c0 == 0
c1 = iota //c1 == 1
c2 = iota //c2 == 2
)
//简写模式
const (
a0 = iota //a0 == 0
a1 //a1 == 1
a2 //a2 == 2
)
//注意iota逐行增加
const (
a = 1 << iota // a == 1 (iota == 0)
b = 1 << iota // b == 2 (iota == 1)
c = 3 // c == 3 (iota == 2, unused)
d = 1 << iota // d == 8 (iota == 3)
)
const (
u = iota * 42 // u == 0 (untyped integer constant)
v float64 = iota * 42 // v == 42.0 (float64 constant)
w = iota * 42 // w == 84 (untyped integer constant)
)
//分开的const语句,iota每次都从0开始
const x = iota //x == 0
const y = iota //y == 0
还没有评论,来说两句吧...