This commit is contained in:
Akagi201
2016-04-04 19:50:06 +08:00
parent c13813ab6b
commit 35b3e2ef68
4 changed files with 11 additions and 17 deletions

View File

@@ -1,17 +1,17 @@
### 2.4.2. 可赋值性
赋值语句是显式的赋值形式,但是程序中还有很多地方会发生隐式的赋值行为:函数调用会隐式地将调用参数的值赋值给函数的参数变量,一个返回语句隐式地将返回操作的值赋值给结果变量一个复合类型的字面量§4.2)也会产生赋值行为。例如下面的语句:
赋值语句是显式的赋值形式,但是程序中还有很多地方会发生隐式的赋值行为:函数调用会隐式地将调用参数的值赋值给函数的参数变量,一个返回语句隐式地将返回操作的值赋值给结果变量一个复合类型的字面量§4.2)也会产生赋值行为。例如下面的语句:
```Go
medals := []string{"gold", "silver", "bronze"}
medals := []string{"gold", "silver", "bronze"}
```
隐式地对slice的每个元素进行赋值操作类似这样写的行为
```Go
medals[0] = "gold"
medals[1] = "silver"
medals[2] = "bronze"
medals[0] = "gold"
medals[1] = "silver"
medals[2] = "bronze"
```
map和chan的元素虽然不是普通的变量但是也有类似的隐式赋值行为。
@@ -20,6 +20,4 @@ map和chan的元素虽然不是普通的变量但是也有类似的隐式
可赋值性的规则对于不同类型有着不同要求对每个新类型特殊的地方我们会专门解释。对于目前我们已经讨论过的类型它的规则是简单的类型必须完全匹配nil可以赋值给任何指针或引用类型的变量。常量§3.6)则有更灵活的赋值规则,因为这样可以避免不必要的显式的类型转换。
对于两个值是否可以用`==``!=`进行相等比较的能力也和可赋值能力有关系:对于任何类型的值的相等比较,第二个值必须是对第一个值类型对应的变量是可赋值的,反之然。和前面一样,我们会对每个新类型比较特殊的地方做专门的解释。
对于两个值是否可以用`==``!=`进行相等比较的能力也和可赋值能力有关系:对于任何类型的值的相等比较,第二个值必须是对第一个值类型对应的变量是可赋值的,反之然。和前面一样,我们会对每个新类型比较特殊的地方做专门的解释。