首頁 > 後端開發 > Golang > 如何在 Go 中建立地圖的深層副本?

如何在 Go 中建立地圖的深層副本?

Patricia Arquette
發布: 2024-11-29 02:01:14
原創
208 人瀏覽過

How to Create Deep Copies of Maps in Go?

在Go 中建立地圖的深層副本

雖然您可以手動建立地圖的副本,但使用內建的地圖可能會更方便-in 函數或函式庫。

內建函數

不幸的是,Go 中沒有專門用於製作任意映射副本的內建函數。

庫和套件

  • encoding/gob: 此庫可讓您編碼地圖和解碼資料結構,包括地圖。透過對原始映射進行編碼並將其解碼為新變量,您可以建立深度副本。
import (
    "bytes"
    "encoding/gob"
    "fmt"
)

func main() {
    ori := map[string]int{
        "key":  3,
        "clef": 5,
    }

    // Encode the original map
    var mod bytes.Buffer
    enc := gob.NewEncoder(&mod)
    err := enc.Encode(ori)
    if err != nil {
        fmt.Println("Failed to encode map:", err)
        return
    }

    // Decode the encoded map into a new variable (deep copy)
    var cpy map[string]int
    dec := gob.NewDecoder(&mod)
    err = dec.Decode(&cpy)
    if err != nil {
        fmt.Println("Failed to decode map:", err)
        return
    }

    // Modify the copied map to demonstrate they are independent
    cpy["key"] = 2
    fmt.Println("Original map:", ori)
    fmt.Println("Copied map:", cpy)
}
登入後複製

利用其中一種方法,您可以輕鬆地在 Go 中建立映射的深度副本。

以上是如何在 Go 中建立地圖的深層副本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板