for-range 又又又来了

下面代码里的ocounter的输出值?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func main() {
var m = map[string]int{
"A": 21,
"B": 22,
"C": 23,
}
counter := 0
for k, v := range m {
if counter == 0 {
delete(m, "A")
}
counter++
fmt.Println(k, v)
}
fmt.Println("counter is ", counter)
}

答案

1
2或者3

解析

​ 因为for range map是无序的,故如果第一次循环到A,则输出3,否则输出2。


for-range 又又又来了
http://example.com/2023/04/23/Go每日一题/for-range-map/
作者
Feng Tao
发布于
2023年4月23日
更新于
2023年4月23日
许可协议