Rumah >pembangunan bahagian belakang >Golang >Mengapa Lelaran Go Map Tidak Tertib, dan Bagaimana Saya Boleh Menjamin Pesanan?
Go Map Printing Out of Order
Dalam Go, peta dilaksanakan menggunakan jadual cincang, yang mengekalkan pasangan nilai kunci dalam bukan -fesyen yang dipesan. Akibatnya, lelaran pada peta tidak menjamin tertib kekunci atau nilai akan dikembalikan.
Mengapa Cetakan Peta Tidak Tertib?
Dalam kod yang disediakan, bulan peta ditakrifkan dengan pasangan nilai kunci yang mewakili nombor bulan dan nama yang sepadan. Apabila melelaran pada peta menggunakan julat, susunan output yang dicetak adalah berdasarkan pelaksanaan dalaman jadual cincang, yang biasanya dioptimumkan untuk prestasi berbanding tertib.
Cara Membetulkan Pesanan
Terdapat beberapa pendekatan untuk memastikan susunan lelaran peta:
1. Gunakan Peta Tertib:
Go tidak mempunyai jenis peta tertib terbina dalam, tetapi terdapat perpustakaan pihak ketiga yang menyediakan fungsi ini. Salah satu perpustakaan tersebut ialah "github.com/golang/collections#OrderedMap."
import "github.com/golang/collections#OrderedMap" func main() { m := collections.NewOrderedMap() m.Set(1, "January") // ... for _, month := range m.Keys() { fmt.Println(month, "-", m.Get(month)) } }
2. Isih Kekunci Peta:
Pilihan lain ialah mendapatkan kekunci daripada peta, mengisihnya dan kemudian mengulangi kekunci yang diisih untuk mengakses nilai mengikut susunan.
func main() { keys := make([]int, 0, len(months)) for k := range months { keys = append(keys, k) } sort.Ints(keys) for _, k := range keys { fmt.Println(k, "-", months[k]) } }
Atas ialah kandungan terperinci Mengapa Lelaran Go Map Tidak Tertib, dan Bagaimana Saya Boleh Menjamin Pesanan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!