多重赋值

题目:

下面代码输出正确的是?

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)
}
  • A. s: [Z,B,C]
  • B. s: [A,Z,C]

查看答案

答案解析:

参考答案及解析:A。

知识点:多重赋值。

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

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

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


多重赋值
http://example.com/2023/08/15/Go每日一题/多重赋值的顺序/
作者
Feng Tao
发布于
2023年8月15日
更新于
2023年9月27日
许可协议