Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mengulang Melalui Peta Go dalam Susunan Tertentu?
Lelaran Teratur Peta Go: Panduan Komprehensif
Melelaran melalui peta Go mengikut urutan boleh menjadi satu cabaran kerana 仕様 bahasa itu, yang menekankan konkurensi dan bukannya pemeliharaan perintah. Artikel ini akan meneroka dua kaedah kukuh untuk mencapai lelaran tertib sambil mengekalkan kelebihan menggunakan peta.
1. Mengekalkan Tertib dengan Sekeping Kekunci
Kaedah ini melibatkan pengesanan kekunci peta dalam kepingan berasingan untuk memastikan susunan lelaran. Semasa memperkenalkan overhed, pendekatan ini menawarkan kesederhanaan dan pelaksanaan yang jelas.
Contoh Pelaksanaan:
type Key int // Key type type Value int // Value type type Map struct { m map[Key]Value keys []Key } func New() *Map { return &Map{m: make(map[Key]Value)} } func (m *Map) Set(k Key, v Value) { if _, ok := m.m[k]; !ok { m.keys = append(m.keys, k) } m.m[k] = v } func (m *Map) Range() { for _, k := range m.keys { fmt.Println(m.m[k]) } }
2. Memautkan Nilai dalam LinkedList
Pendekatan ini melibatkan nilai pembalut dalam struct yang mengandungi nilai sebenar dan rujukan kepada kunci seterusnya. Ia membenarkan pemasukan dan penyingkiran elemen yang cekap.
Contoh Pelaksanaan:
type Key int // Key type type Value int // Value type type valueWrapper struct { value Value next *Key // Next key } type Map struct { m map[Key]valueWrapper first, last *Key } func New() *Map { return &Map{m: make(map[Key]valueWrapper)} } func (m *Map) Set(k Key, v Value) { if _, ok := m.m[k]; !ok && m.last != nil { w2 := m.m[*m.last] m.m[*m.last] = valueWrapper{w2.value, &k} } w := valueWrapper{value: v} m.m[k] = w if m.first == nil { m.first = &k } m.last = &k } func (m *Map) Range() { for k := m.first; k != nil; { w := m.m[*k] fmt.Println(w.value) k = w.next } }
Bonus:
Berikut ialah beberapa petua tambahan untuk dipertimbangkan :
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengulang Melalui Peta Go dalam Susunan Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!