好吧,我認爲這可能是一個老問題,但我沒有找到任何東西在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