下面代码输出正确的是?
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]
下面代码输出正确的是?
func main() {
i := 1
s := []string{"A", "B", "C"}
i, s[i-1] = 2, "Z"
fmt.Printf("s: %v \n", s)
}
`单行代码`
mark
这个没啥坑吧。靠,坑
mark
多重赋值分为两个步骤,有先后顺序:计算等号左边的索引表达式和取址表达式,接着计算等号右边的表达式;赋值; 知识点:多重赋值。
mk
mark
赋值表达式优先级:先计算等号左边所有
赋值还能这么玩。。
mark
func main() { i := 1 s := []string{"A", "B", "C"} i, s[i-1] = 2, "Z" fmt.Printf("s: %v \n", s) }
知识点:多重赋值。
多重赋值分为两个步骤,有先后顺序: 计算等号左边的索引表达式和取址表达式,接着计算等号右边的表达式; 赋值; 所以本例,会先计算 s[i-1],等号右边是两个表达式是常量,所以赋值运算等同于 i, s[0] = 2, "Z"。
m
打卡
ka
mark
打哈
这个挺好理解的其实
mark
mark
mark
多重赋值的先后顺序:
1、计算等号左边的索引表达式和取址表达式,接着计算等号右边的表达式; 2、赋值;
1
牛的
mark
会先计算 s[i-1],等号右边是两个表达式是常量,所以赋值运算等同于 i, s[0] = 2, "Z"。
mark
mark
打卡
mark
mark
https://oyto.github.io/categories/ 这里整理了go的每日一题,有需要的uu可以一起学习参考
mark
mark
mark
太基础了
error too
m
参考答案及解析:A。
知识点:多重赋值。
多重赋值分为两个步骤,有先后顺序: 计算等号左边的索引表达式和取址表达式,接着计算等号右边的表达式; 赋值;
mark
A. s: [Z,B,C]
mark
打卡
多重赋值,先左边,后右边