变量
我们知道,变量是程序的基本组成元素,我们可以通过定义变量,来申请和使用数据的存储空间。
声明
Go 声明变量的语法与 Java 是不一样的,需要关键字 var
,并且,先写变量名,再写类型名称。
1 | // 定义单变量 |
初始化
使用 var
声明变量,如果没有提供初始化值,那么,变量会自动初始化为零值。
如果在声明时候,提供了初始化值,那么,又可以省略类型名称,因为编译器会自动推断出变量的类型。
在函数内部,使用 :=
还可以进一步省略 var
关键字。不过,当我们使用这种方式声明变量时,需要注意检查,这个操作是否会修改到全局变量,以免出错。
1 | var v int32 = 1 // 带初始化值 |
赋值
变量的赋值操作在声明之后,Go 的特别之初在于,支持多重赋值。
其实上面的例子(同时初始化多个变量)已有所展示。
除此之外,多重赋值一个典型的应用就是,交换变量。
另外,关于多重赋值,还需要注意的是,在进行多重赋值的时候,会先计算所有相关值,再从左到右进行赋值操作。
1 | var v int32 |
匿名变量
Go 的函数支持同时返回多个值,但是,有时候我们可能需要关注其中的某一个或几个值,这时候就可以使用到 _
这个匿名变量。
1 | func GetName() (firstName, lastName, nickName string) { |
常量
常量是指编译期间已知且不可改变的值(数值类型、布尔类型、字符串)。
声明
Go 使用 const
关键字定义常量。
1 | const PI float64 = 3.141592653 |
初始化
由于常量的赋值是一个编译期行为,因此,常量在声明的时候就需要进行初始化,并且初始化的表达式,应该是字面常量,或者是在编译期就能够计算出结果的表达式。
在常量组中,如不提供类型和初始化值,那么,就默认与上一个的常量相同。
1 | const EIGHT = 1 << 3 // OK |
枚举
学习常量,很自然就会想到枚举。
Go 里面的枚举相对简单,它使用了一个特殊的常量 iota
。iota
会在每一个 const
出现的时候,被重置为 0
,然后,每出现一次 iota
,它的值就会自动 +1
。
1 | const ( |