多重赋值

题目

下面代码输出正确的是?

1
2
3
4
5
6
func main() {
i := 1
s := []string{"A", "B", "C"}
i, s[i-1] = 2, "Z"
fmt.Printf("s: %v \n", s)
}
1
2
A. s: [Z,B,C]
B. s: [A,Z,C]

正确答案:

1
A

解析:

​ 多重赋值分为两个步骤,有先后顺序:

  • 计算等号左边的索引表达式和取址表达式,接着计算等号右边的表达式;
  • 赋值;

​ 所以本题,会先计算 s[i-1],等号右边是两个表达式是常量,所以赋值运算等同于 i, s[0] = 2, "Z"


多重赋值
http://example.com/2023/04/26/Go每日一题/多重赋值/
作者
Feng Tao
发布于
2023年4月26日
更新于
2023年9月27日
许可协议