好吧,我认为这可能是一个老问题,但我没有找到任何东西在stackoverflow。在进行中,地图上的迭代顺序不保证可重现。所以,建议的方法是将密钥放在一个切片中并对该切片进行排序。然后迭代该切片以从地图检索值,以便我们按顺序获取它们(因为由键组成的切片已排序,所以将以可重现的顺序排列)。所以这意味着切片需要排序,否则在切片上的迭代也不会给出可重复的顺序。但是当我在操场上尝试下面的代码时,我总是发现迭代中维护的顺序,然后在映射迭代的情况下,为什么键片需要排序?切片迭代顺序在
func main() {
var mySlice = make([]string, 0)
mySlice = append(mySlice, "abcd")
mySlice = append(mySlice, "efgh")
mySlice = append(mySlice, "ijkl")
mySlice = append(mySlice, "mnop")
mySlice = append(mySlice, "qrst")
mySlice = append(mySlice, "uvwxyz")
for _, val := range mySlice {
fmt.Println(val)
}
fmt.Println(strings.Join(mySlice, "|"))
}
输出:
abcd
efgh
ijkl
mnop
qrst
uvwxyz
abcd|efgh|ijkl|mnop|qrst|uvwxyz
您正在混合切片和地图。 – Volker