上QQ阅读APP看书,第一时间看更新
1.2.3 赋值
赋值语句最简单、最常见的形式是使用“=”,等号左边是变量名,等号右边是表达式。
Go语言提供了自增、自减和*=、+=等先运算再赋值的操作,示例如下:
m := 1 m++ //相当于m=m+1 m -= 1 //相当于m=m-1
这些语句都是为了避免表达式中重复出现变量名,让运算完成后再赋值。
多重赋值是Go语言中赋值的另一个特点,也就是说允许一系列变量一次性赋值。这种特性有时会让我们的编程非常便利,比如把m和n两个整型变量的值进行调换:
m,n = n,m
当然,也可以是两个以上的变量一起赋值:
x,y,z = 1,2,3
不过,如果同一行中有太多表达式,可读性就会下降,所以要灵活把握。
多重赋值在Go语言代码中非常常见,因为大多数函数返回的都是多个返回值。
in,err := os.Open("test.txt")
我们要打开一个本地文件,可以使用os包的Open函数返回文件的句柄和错误,然后用in和err对应等待赋值,如果err为nil,则代表没有错误,这也是Go处理错误的方式,后文会有具体介绍。
如果此处我们不在意错误,可以将不需要的值赋给空标识符_,如下:
in,_ := os.Open("test.txt")
说明
在Go语言中,空标识符_是比较常用的,不需要的赋值都可以赋给空标识符。可以将其理解为特殊的变量名。
除了上面介绍的通过等号显式赋值以外,在Go语言的代码中还隐藏着很多隐式赋值。比如:
data := []int{1,2,3}
这是整型切片的应用,会在第3章介绍。这里要提前指出此处的隐式赋值,相当于:
data[0] = 1 data[1] = 2 data[2] = 3
隐式赋值要求后面跟的具体值与前面的类型严格一致,否则编译会报错。