变量和常量
变量
变量:主要作用是存储信息,类似一个容器。变量的值是存储在计算机内存中。
在go中,变量有三个属性:变量类型、变量名和变量值。
声明变量
var 变量名 变量类型
例子:
1 var name string 2 var age int 3 var isOk bool 4 5 var ( 6 a string 7 b int 8 c bool 9 d float32 10 )
在变量声明的时候,会分配内存空间(地址),每个变量会被初始化成其类型的默认值,整型和浮点型是0,字符串是空字符串,布尔类型是false,切片、函数、指针变量是nil;
声明变量并初始化的时候也可以不用指定类型,go语言会根据等号右边的值类型自动推导变量的类型。
例子:
1 var name = "xiaoming" 2 var age = 18
短变量声明
在函数内部可以使用 := 方式声明并初始化变量
例子:
1 func main() { 2 n := 10 3 }
匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。
注意事项:
- 函数外的每个语句必须以关键字开始(var, const, func等)
- := 不能使用在函数外
- _多用于占位,表示忽略值
常量
常量:相对于变量来说,常量就是在程序运行过程中不会变的值。
声明和初始化常量和变量类似,关键字换成 const 。
const 同时声明多个常量时,如果省略了值则表示和上面一行的值相同。
例子:
1 const ( 2 n1 = 100 3 n2 4 n3 5 )
上面示例中,n1、n2、n3都是100。
iota
iota是go语言的常量计数器,只能在常量的表达式中使用。
iota在const关键字出现时将被重置为0。const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。
几个常见的iota示例:
1 const ( 2 n1 = iota // 0 3 n2 // 1 4 n3 // 2 5 n4 // 3 6 )
1 const ( 2 n1 = iota // 0 3 n2 // 1 4 _ 5 n4 // 3 6 )
1 const ( 2 n1 = iota // 0 3 n2 = 100 // 100 4 n3 = iota // 2 5 n4 // 3 6 ) 7 const n5 = iota // 0
1 const ( 2 a, b = iota + 1, iota + 2 // 1 2 3 c, d // 2 3 4 e, f // 3 4 5 )