我遇到了这个简单的Golang代码,并对Go在这里的行为感到惊讶。有人可以解释这里发生了什么,以及如何正确编写以下代码吗?
如您所见,我有一个 ,其中键是 的 。我添加几个值,然后循环访问 ,将每个键转换为 a 并将每个键附加到类型的对象。maparrayintmapslice[][]int
func test() {
myMap := make(map[[3]int]bool)
myMap[[3]int{1, 2, 3}] = true
myMap[[3]int{0, 5, 4}] = true
myMap[[3]int{9, 7, 1}] = true
myMap[[3]int{0, 2, 8}] = true
array := [][]int{}
for val := range myMap {
array = append(array, val[:])
}
fmt.Println(array)
}
我本来以为最后一行会打印出来,但是,令我惊讶的是,它打印了,或者,或者其他一些只包含其中一个键的变体多次。[[1,2,3], [0,5,4], [9,7,1], [0,2,8]][[0 2 8] [0 2 8] [0 2 8] [0 2 8]][[9 7 1] [9 7 1] [9 7 1] [9 7 1]]
我的go版本是1.16.5
狐的传说
RISEBY
拉莫斯之舞
相关分类