Struktur peta yang disertakan dengan bahasa golang ialah jenis data yang sangat mudah, tetapi untuk operasi data yang memerlukan lebih kecekapan dan fleksibiliti, kami boleh memilih untuk menggunakan peta cincang yang dilaksanakan oleh golang. Artikel ini akan memperkenalkan cara golang melaksanakan peta cincang.
1. Prinsip Pelaksanaan
Prinsip golang melaksanakan peta cincang adalah sangat mudah, iaitu untuk memetakan pasangan nilai kunci kepada tatasusunan melalui algoritma tertentu dan menggunakan senarai terpaut untuk menyelesaikan cincang konflik. Khususnya, melaksanakan peta cincang memerlukan langkah berikut:
2. Kod pelaksanaan
Berikut ialah kod golang mudah untuk melaksanakan peta cincang:
package hashmap import "sync" type Node struct { key string value interface{} next *Node } type HashMap struct { size int nodes []*Node mutex sync.Mutex } func NewHashMap(size int) *HashMap { return &HashMap{size, make([]*Node, size), sync.Mutex{}} } func (hm *HashMap) hash(key string) int { h := 0 for i := 0; i < len(key); i++ { h = (h << 5) + h + int(key[i]) } return h % hm.size } func (hm *HashMap) Set(key string, value interface{}) { hm.mutex.Lock() defer hm.mutex.Unlock() i := hm.hash(key) if hm.nodes[i] == nil { hm.nodes[i] = &Node{key, value, nil} } else { for n := hm.nodes[i]; n != nil; n = n.next { if n.key == key { n.value = value return } if n.next == nil { n.next = &Node{key, value, nil} break } } } } func (hm *HashMap) Get(key string) interface{} { hm.mutex.Lock() defer hm.mutex.Unlock() i := hm.hash(key) for n := hm.nodes[i]; n != nil; n = n.next { if n.key == key { return n.value } } return nil } func (hm *HashMap) Delete(key string) { hm.mutex.Lock() defer hm.mutex.Unlock() i := hm.hash(key) if hm.nodes[i] != nil { if hm.nodes[i].key == key { hm.nodes[i] = hm.nodes[i].next return } for n := hm.nodes[i]; n.next != nil; n = n.next { if n.next.key == key { n.next = n.next.next return } } } }
3. Contoh penggunaan
Penggunaan Contohnya adalah seperti berikut:
package main import ( "fmt" "hashmap" ) func main() { m := hashmap.NewHashMap(16) m.Set("apple", 1) m.Set("banana", 2) m.Set("cat", 3) fmt.Println(m.Get("apple")) // Output: 1 fmt.Println(m.Get("carrot")) // Output: <nil> m.Delete("banana") fmt.Println(m.Get("banana")) // Output: <nil> }
4. Ringkasan
Melaksanakan peta cincang melalui golang boleh memudahkan operasi data yang cekap dan fleksibel. Prinsip melaksanakan peta cincang adalah sangat mudah Ia terutamanya memetakan pasangan nilai kunci kepada tatasusunan melalui algoritma cincang dan menggunakan senarai terpaut untuk menyelesaikan konflik cincang. Kod dalam contoh penggunaan boleh digunakan untuk rujukan anda, dan anda juga boleh mengoptimumkan dan memperbaikinya mengikut keperluan anda sendiri.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan peta hash dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!