Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mencipta Salinan Dalam Peta dengan Cekap dalam Go?
Membuat Salinan Peta dalam Go: Adakah Terdapat Fungsi Terbina Dalam?
Peta dalam Go ialah struktur data yang serba boleh, tetapi kekurangan fungsi terbina dalam untuk membuat salinan boleh menjadi halangan. Nasib baik, beberapa pendekatan boleh membantu anda mencapai perkara ini.
Menggunakan Pakej pengekodan/gob
Untuk penyelesaian umum, pakej pengekodan/gob menyediakan cara yang mantap untuk membuat salinan dalam struktur data kompleks, termasuk peta. Dengan mengekod peta asal dan kemudian menyahkodnya menjadi pembolehubah baharu, anda membuat salinan yang merujuk lokasi memori yang berbeza.
package main import ( "bytes" "encoding/gob" "fmt" "log" ) func main() { ori := map[string]int{ "key": 3, "clef": 5, } var mod bytes.Buffer enc := gob.NewEncoder(&mod) dec := gob.NewDecoder(&mod) fmt.Println("ori:", ori) // key:3 clef:5 err := enc.Encode(ori) if err != nil { log.Fatal("encode error:", err) } var cpy map[string]int err = dec.Decode(&cpy) if err != nil { log.Fatal("decode error:", err) } fmt.Println("cpy:", cpy) // key:3 clef:5 cpy["key"] = 2 fmt.Println("cpy:", cpy) // key:2 clef:5 fmt.Println("ori:", ori) // key:3 clef:5 }
Dengan menggunakan pengekodan/gob, anda boleh membuat salinan dalam yang menghormati struktur bersarang walaupun , seperti kepingan peta atau peta yang mengandungi kepingan.
Lain-lain Pertimbangan
Walaupun pengekodan/gob menawarkan penyelesaian umum, ia mungkin tidak sesuai untuk semua kes. Jika peta anda agak mudah, anda boleh mempertimbangkan untuk menulis fungsi tersuai untuk membuat salinan cetek. Selain itu, terdapat pustaka pihak ketiga yang menyediakan kefungsian penyalinan peta.
Ingat bahawa salinan dalam Go sentiasa dalam, bermakna ia mencipta kejadian baharu data, tidak seperti salinan cetek, yang hanya membuat rujukan kepada yang asal. Ini ialah perbezaan penting untuk dipertimbangkan semasa memanipulasi peta.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Salinan Dalam Peta dengan Cekap dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!