2016-02-15 03:06:34 +00:00
|
|
|
|
## 2.4. 赋值
|
2015-12-09 07:45:11 +00:00
|
|
|
|
|
2016-02-15 03:06:34 +00:00
|
|
|
|
使用赋值语句可以更新一个变量的值,最简单的赋值语句是将要被赋值的变量放在=的左边,新值的表达式放在=的右边。
|
2015-12-09 07:45:11 +00:00
|
|
|
|
|
|
|
|
|
```Go
|
2016-02-15 03:06:34 +00:00
|
|
|
|
x = 1 // 命名变量的赋值
|
|
|
|
|
*p = true // 通过指针间接赋值
|
|
|
|
|
person.name = "bob" // 结构体字段赋值
|
|
|
|
|
count[x] = count[x] * scale // 数组、slice或map的元素赋值
|
2015-12-09 07:45:11 +00:00
|
|
|
|
```
|
|
|
|
|
|
2016-02-15 03:06:34 +00:00
|
|
|
|
特定的二元算术运算符和赋值语句的复合操作有一个简洁形式,例如上面最后的语句可以重写为:
|
2015-12-09 07:45:11 +00:00
|
|
|
|
|
|
|
|
|
```Go
|
2016-01-20 15:16:19 +00:00
|
|
|
|
count[x] *= scale
|
2015-12-09 07:45:11 +00:00
|
|
|
|
```
|
|
|
|
|
|
2016-02-15 03:06:34 +00:00
|
|
|
|
这样可以省去对变量表达式的重复计算。
|
2015-12-09 07:45:11 +00:00
|
|
|
|
|
2016-02-15 03:06:34 +00:00
|
|
|
|
数值变量也可以支持`++`递增和`--`递减语句(译注:自增和自减是语句,而不是表达式,因此`x = i++`之类的表达式是错误的):
|
2015-12-09 07:45:11 +00:00
|
|
|
|
|
|
|
|
|
```Go
|
2016-01-20 15:16:19 +00:00
|
|
|
|
v := 1
|
2016-02-15 03:06:34 +00:00
|
|
|
|
v++ // 等价方式 v = v + 1;v 变成 2
|
|
|
|
|
v-- // 等价方式 v = v - 1;v 变成 1
|
2015-12-09 07:45:11 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
{% include "./ch2-04-1.md" %}
|
|
|
|
|
|
|
|
|
|
{% include "./ch2-04-2.md" %}
|