再练for-range
题目:
下面这段代码输出的是什么?请说明原因。
1 |
|
答案
1 |
|
解析:
for range 循环的时候会创建每个元素的副本,而不是元素的引用。
在使用for-range循环里,每次遍历使用的val都是对同一个元素的遍历赋值,故在第一个for循环里,每次使用的都是val的元素进行赋值,即map中所有的元素的值都是变量val的地址。
在最后一次遍历时,val指向slice的最后一个元素的地址,即3的地址。故最后的输出都是3。
正确的写法:
1 |
|
再练for-range
http://example.com/2023/04/30/Go每日一题/再练for-range/