Rumah > pembangunan bahagian belakang > Golang > Mengapa Lelaran Go Map Tidak Tertib, dan Bagaimana Saya Boleh Menjamin Pesanan?

Mengapa Lelaran Go Map Tidak Tertib, dan Bagaimana Saya Boleh Menjamin Pesanan?

Susan Sarandon
Lepaskan: 2024-12-29 05:20:13
asal
276 orang telah melayarinya

Why is Go Map Iteration Unordered, and How Can I Guarantee Order?

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))
    }
}
Salin selepas log masuk

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])
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan