首页 > 后端开发 > Golang > 如何在 Go 中创建地图的深层副本?

如何在 Go 中创建地图的深层副本?

Patricia Arquette
发布: 2024-11-29 02:01:14
原创
209 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板