Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menyalin Dalam Peta Go Tanpa Menjejaskan Peta Asal?

Bagaimana untuk Menyalin Dalam Peta Go Tanpa Menjejaskan Peta Asal?

Mary-Kate Olsen
Lepaskan: 2024-12-25 16:18:11
asal
257 orang telah melayarinya

How to Deep Copy a Go Map Without Affecting the Original?

Menyalin Peta Dalam Tanpa Merosakkan Yang Asal

Dalam Go, cuba menyalin peta dengan memberikan rujukan seperti aSuperMap[y] = aMap boleh membawa kepada akibat yang tidak diingini. Untuk mencipta peta bersekutu tanpa menjejaskan penyalinan yang asal dan mendalam diperlukan.

Masalahnya

Contoh yang disediakan cuba menyalin kandungan aMap ke dalam aSuperMap dan kemudian kosongkan aMap. Walau bagaimanapun, memadamkan entri daripada aMap (delete(aMap, x)) juga mengalih keluar rujukannya daripada aSuperMap. Ini mengakibatkan supermap mengandungi data pendua atau menjadi tidak konsisten.

Penyelesaian: Penyalinan Dalam

Untuk mengelakkan pengubahsuaian peta asal semasa membuat perubahan pada salinan, penyalinan dalam adalah digunakan. Dalam gelung untuk:

for k, v := range originalMap {
  newMap[k] = v
}
Salin selepas log masuk

Setiap pasangan nilai kunci daripada OriginalMap disalin secara individu ke dalam newMap. Proses ini mencipta peta baharu dan bebas yang tidak dipautkan dengan peta asal. Peta asal kemudiannya boleh dikosongkan tanpa menjejaskan salinan.

Contoh

Contoh berikut menunjukkan penyalinan dalam peta:

originalMap := map[string]int{"one": 1, "two": 2}

// Deep copy originalMap into newMap
newMap := make(map[string]int)
for k, v := range originalMap {
  newMap[k] = v
}

// Clear the original map
originalMap = make(map[string]int)

// Verify that newMap is independent of originalMap
newMap["three"] = 3
fmt.Println(newMap) // {one: 1, two: 2, three: 3}
fmt.Println(originalMap) // {}
Salin selepas log masuk

Dalam contoh ini, penyalinan mendalam membolehkan newMap diubah suai dan dilanjutkan secara bebas daripada OriginalMap, memastikan integriti kedua-dua peta adalah dikekalkan.

Atas ialah kandungan terperinci Bagaimana untuk Menyalin Dalam Peta Go Tanpa Menjejaskan Peta Asal?. 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