Golang:deepcopy深拷贝工具库

简介: Golang:deepcopy深拷贝工具库

Deep copy things

译文:事物的深度复制

文档

安装

go get github.com/mohae/deepcopy

示例

1、深拷贝切片

package main
import (
    "fmt"
    "github.com/mohae/deepcopy"
)
func main() {
    var s1 = []int{1, 2, 3, 4, 5}
    // 深拷贝切片
    cpy := deepcopy.Copy(s1)
    s2 := cpy.([]int)
    // 修改s2的值
    s2[0] = 6
    fmt.Printf("s1: %v\n", s1)
    // s1: [1 2 3 4 5]
    fmt.Printf("s2: %v\n", s2)
    // s2: [6 2 3 4 5]
}

2、深拷贝map

package main
import (
    "fmt"
    "github.com/mohae/deepcopy"
)
func main() {
    var m1 = make(map[string]int)
    m1["age"] = 10
    // 深拷贝map
    cpy := deepcopy.Copy(m1)
    m2 := cpy.(map[string]int)
    // 修改m2的值
    m2["age"] = 12
    fmt.Printf("m1: %v\n", m1)
    // m1: map[age:10]
    fmt.Printf("m2: %v\n", m2)
    // m2: map[age:12]
}

参考

「Go工具箱」推荐一个非常简单的深拷贝工具:deepcopy


相关文章
|
5月前
|
Go
在golang中发起http请求以获取访问域名的ip地址实例(使用net, httptrace库)
这只是追踪我们的行程的简单方法,不过希望你跟着探险家的脚步,即使是在互联网的隧道中,也可以找到你想去的地方。接下来就是你的探险之旅了,祝你好运!
188 26
|
7月前
|
Go 开发者
go-carbon v2.6.0 重大版本更新,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持
121 3
|
JSON Go 数据格式
Golang 对象深拷贝的方案以及性能比较
文章探讨了在Go语言中实现对象深拷贝的三种方法:使用gob序列化、JSON序列化和定制化拷贝,并对比了它们在性能和代码复杂度方面的优劣,建议根据具体需求选择最适合的方法。
342 0
|
8月前
|
网络协议 测试技术 Linux
Golang 实现轻量、快速的基于 Reactor 模式的非阻塞 TCP 网络库
gev 是一个基于 epoll 和 kqueue 实现的高性能事件循环库,适用于 Linux 和 macOS(Windows 暂不支持)。它支持多核多线程、动态扩容的 Ring Buffer 读写缓冲区、异步读写和 SO_REUSEPORT 端口重用。gev 使用少量 goroutine,监听连接并处理读写事件。性能测试显示其在不同配置下表现优异。安装命令:`go get -u github.com/Allenxuxu/gev`。
145 0
|
11月前
|
JSON Go 开发者
go-carbon v2.5.0 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持。
209 4
|
11月前
|
存储 Cloud Native Shell
go库介绍:Golang中的Viper库
Viper 是 Golang 中的一个强大配置管理库,支持环境变量、命令行参数、远程配置等多种配置来源。本文详细介绍了 Viper 的核心特点、应用场景及使用方法,并通过示例展示了其强大功能。无论是简单的 CLI 工具还是复杂的分布式系统,Viper 都能提供优雅的配置管理方案。
264 6
|
Unix Go
Golang语言标准库time之日期和时间相关函数
这篇文章是关于Go语言日期和时间处理的文章,介绍了如何使用Go标准库中的time包来处理日期和时间。
463 3
|
NoSQL Java 测试技术
Golang内存分析工具gctrace和pprof实战
文章详细介绍了Golang的两个内存分析工具gctrace和pprof的使用方法,通过实例分析展示了如何通过gctrace跟踪GC的不同阶段耗时与内存量对比,以及如何使用pprof进行内存分析和调优。
362 0
Golang内存分析工具gctrace和pprof实战
|
JSON Go API
一文搞懂 Golang 高性能日志库 - Zap
一文搞懂 Golang 高性能日志库 - Zap
1116 2
|
存储 JSON Go
一文搞懂 Golang 高性能日志库 Zerolog
一文搞懂 Golang 高性能日志库 Zerolog
1024 0