根據Golang 語言語法規范:賦值=表達式列表?assign_op?表達式列表。assign_op?= [添加操作|?多運算]“=”。此外:元組分配將多值運算的各個元素分配給變量列表。但是,在嘗試編譯以下代碼時:package mainfunc 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 += aTempb += bTemp但是,這似乎是該語言所說的它支持的東西。這是編譯器中的錯誤嗎?我錯過了語言中的某些內容嗎?
1 回答

猛跑小豬
TA貢獻1858條經驗 獲得超8個贊
+=
是賦值操作,不是簡單的賦值。規范明確指出:
賦值運算x op= y 其中op是一個二元算術運算符等同于 x = x?op?(y) [...] 在賦值運算中,左右表達式列表都必須恰好包含一個單值表達。
- 1 回答
- 0 關注
- 140 瀏覽
添加回答
舉報
0/150
提交
取消