Rumah > pembangunan bahagian belakang > Golang > Bagaimana Saya Boleh Menyalin Peta dalam Go?

Bagaimana Saya Boleh Menyalin Peta dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-11-26 16:15:11
asal
980 orang telah melayarinya

How Can I Deep Copy Maps in Go?

Peta Penyalinan Dalam dalam Go

Soalan: Adakah terdapat fungsi atau pustaka terbina dalam dalam Go untuk mencipta salinan dalam peta arbitrari?

Jawapan: Walaupun Go tidak menawarkan fungsi terbina dalam khusus untuk penyalinan peta, pakej pengekodan/gob boleh digunakan untuk tujuan ini.

Pendekatan Pengekodan dan Penyahkodan

Pengekodan/gob menyediakan dua fungsi: Pengekodan dan Nyahkod, yang boleh dimanfaatkan untuk mencapai salinan mendalam sesuatu peta. Fungsi Encode mengekod peta menjadi penimbal, manakala fungsi Decode membina semula peta daripada penimbal.

Contoh:

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
}
Salin selepas log masuk

Dalam contoh ini, kami mengekod peta asal, ori, ke dalam mod penimbal. Kami kemudiannya menyahkod penimbal ke dalam peta baharu, cpy. Peta salinan dan peta asal kini bebas dan sebarang perubahan yang dibuat pada satu tidak akan menjejaskan yang lain.

Faedah Pengekodan/Gob

Menggunakan pengekodan/tawaran gob faedah apabila bekerja dengan struktur data yang kompleks, termasuk kepingan struktur yang mengandungi sekeping peta. Ia menyediakan cara yang mudah untuk melakukan penyalinan dalam tanpa memerlukan pelaksanaan manual.

Sumber Tambahan

Untuk mengetahui lebih lanjut tentang pengekodan/gob, rujuk blog rasmi Go siaran:
[https://blog.golang.org/gobs](https://blog.golang.org/gobs)

Atas ialah kandungan terperinci Bagaimana Saya Boleh Menyalin Peta dalam Go?. 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