Mengulang Peta Go mengikut Susunan Sisipan
Kebijaksanaan konvensional mencadangkan bahawa susunan lelaran peta Go tidak dapat diramalkan dan tidak stabil. Walau bagaimanapun, untuk mencapai pemeliharaan pesanan memerlukan penggunaan struktur data alternatif yang mengekalkan urutan sisipan secara bebas:
1. Kekunci Penjejakan dalam Sekeping Berasingan:
Dengan mengekalkan sekeping kekunci mengikut susunan ia dimasukkan, anda boleh melelang ke atas kekunci dan mendapatkan semula nilai yang sepadan daripada peta. Ini menghapuskan keperluan untuk data pendua dan menyediakan urutan lelaran yang boleh dipercayai.
2. Menggunakan Pembungkus Nilai dengan Senarai Berpaut:
Pendekatan lain melibatkan pembalut setiap nilai dalam peta dengan struct yang menyertakan rujukan kepada kunci seterusnya dalam susunan sisipan. Ini membolehkan pelintasan unsur dalam urutan yang dimaksudkan, walaupun selepas dialih keluar atau sisipan.
Perbandingan:
Kedua-dua kaedah mengekalkan kelebihan menggunakan peta sambil menyediakan lelaran tertib . Walau bagaimanapun, pendekatan dengan hirisan berasingan untuk kunci mempunyai pelaksanaan yang lebih mudah tetapi mungkin dikenakan overhed apabila mengalih keluar elemen. Pendekatan senarai terpaut menawarkan penyingkiran yang lebih pantas tetapi memperkenalkan lebih kerumitan.
Coretan Kod:
Kunci dalam Slice:
type Map struct { m map[Key]Value keys []Key } func (m *Map) Set(k Key, v Value) { // ... m.keys = append(m.keys, k) // ... }
Pembungkus Nilai dengan Terpaut Senarai:
type valueWrapper struct { value Value next *Key } type Map struct { m map[Key]valueWrapper first, last *Key } func (m *Map) Set(k Key, v Value) { // ... if m.last != nil { w := m.m[*m.last] m.m[*m.last] = valueWrapper{w.v, &k} } // ... }
Dengan menggunakan teknik ini, anda boleh melelakan dengan cekap melalui peta Go dan mendapatkan semula item mengikut susunan asalnya.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengulang Melalui Peta Go dalam Susunan Sisipan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!