for-range-6
题目:
下面这段代码输出结果正确吗?
1 |
|
答案解析:
参考答案及解析:s2 的输出结果错误。
s2 的输出是 &{C} &{C} &{C}
,在前面题目我们提到过,for range 使用短变量声明(:=)的形式迭代变量时,变量 i、value 在每次循环体中都会被重用,而不是重新声明。所以 s2 每次填充的都是临时变量 value 的地址,而在最后一次循环中,value 被赋值为{c}。因此,s2 输出的时候显示出了三个 &{c}。
可行的解决办法如下:
1 |
|
for-range-6
http://example.com/2023/08/11/Go每日一题/for-range-6/