根据the Golang language syntax specification:
此外:
元组分配将多值操作的各个元素分配给变量列表。
但是,当尝试编译the following code时:
package main
func addOne(a, b int) (int, int) {
return a+1, b+1
}
func main() {
var a, b int
a, b += addOne(a, b)
}
编译器抱怨:
syntax error: unexpected +=, expecting := or = or comma
我知道临时变量可以解决此问题。例如
aTemp, bTemp := addOne(a, b)
a += aTemp
b += bTemp
但是,这似乎是语言所支持的东西。
这是编译器中的错误吗?我是否错过了某种语言的语言?
答案 0 :(得分:2)
<i>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Border -->
<item>
<shape>
<solid android:color="#E9EEFB">
</solid>
</shape>
</item>
<!-- Body -->
<item
android:top="1dp"
android:bottom="1dp"
android:right="1dp"
android:left="1dp">
<shape>
<solid android:color="#ffffff">
</solid>
</shape>
</item>
</layer-list>
</i>
是分配操作,而不是简单的分配。规范明确指出:
赋值运算 x op = y,其中 op 是二进制算术运算符,等效于x = x op (y)[。 ..]在赋值操作中,左侧和右侧的表达式列表都必须只包含一个单值表达式。