Golang:deepcopy深拷贝工具库

news/2024/10/1 9:42:10

Golang:deepcopy深拷贝工具库

图片

Deep copy things

译文:事物的深度复制

文档

  • github https://github.com/mohae/deepcopy
  • pkg.go https://pkg.go.dev/github.com/mohae/deepcopy

安装

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]
}

 

回复:【golang加群】加入golang开发者交流群

golang · 目录
上一篇Golang:Gomail一个简单高效的电子邮件发送包下一篇Golang:cast安全且易用的类型转换工具
阅读原文
阅读 569
 
写留言
 
 
 
 
 
 
 
 
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/29614.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

C++ 引用

引用函数的形参还有引用传参这一形式 引用:是一个变量的别名,它是某个已经存在的变量的另一个名字。 引用创建后,不可更改 因不可更改,所以必须初始化 必须初始化,所以不可为空(不能被修改) 语法:引用传参语法:函数三种传参模式对比

第十届山东省大学生程序设计竞赛题解(A、F、M、C)

部分代码define了long long,请记得开long long A. Calandar 把年份、月份、单个的天数全都乘以对应的系数转化成单个的天数即可,注意最后的结果有可能是负数,要转化成正数。发现技巧是:(ans % 5 + 5) % 5。? 还有注意不能这样写,答案不正确。或许是因为取模运算没有这样的…

定时将系统时间更新在日志文件中

获取当前系统时间,把时间转换为特定格式”yy年mm月dd日 星期x tt:mm:ss”,并每隔1s写入到本地磁盘中一个叫做log.txt的文本中,如果文本不存在则创建V1.0 2024年5月9日 发布于博客园实现:设计程序,获取当前系统时间,把时间转换为特定格式”yy年mm月dd日 星期x tt:mm:ss”,…

iceoryx源码阅读(二)——共享内存管理

目录1 共享内存模型2 获取共享内存2.1 MemoryManager::getChunk2.2 MemPool::getChunk3 释放共享内存3.1 SharedChunk::freeChunk3.2 MemPool::freeChunk4 总结 基于共享内存通信的核心在于共享内存的管理,包括共享内存的分配、释放。 1 共享内存模型 iceoryx先将整块共享内存…

iceoryx源码阅读(一)——全局概览

本系列文章对iceoryx源码进行解读。 一、什么是iceoryx iceoryx是一种基于共享内存实现的进程间通信组件,实现零拷贝传输。二、源码结构 iceoryx源码包括若干工程,整理如下表所示:下图展示了主要项目之间的依赖(FROM:iceoryx(冰羚)-Architecture):三、iceoryx应用程序结…

PVE安装Windows 95报错 while initializing device IOS

安装Win95重启后报错信息如下图,重启一直报错 while initializing device IOS,查了下报错原因说是 CPU频率太高导致,需要安装AMDK6UPD.EXE补丁包 下载地址 https://zhangka.lanzouw.com/igW0S1y8p5pe 打补丁操作流程: 1)将下载的iso文件加载到新光盘中 2)重启到dos环境…

第147天:免杀对抗-C2远控篇CC++ShellCode定性分析生成提取Loader加载模式编译执行

https://blog.csdn.net/qq_29948489/article/details/136180966 #C2远控-ShellCode-认知&环境 1.创建工程时关闭SDL检查 2.属性->C/C++->代码生成->运行库->多线程 (/MT)如果是debug则设置成MTD 3.属性->C/C++->代码生成->禁用安全检查GS 4.关闭生成清…

再探URLDNS链(手搓exp)

夜深了,想着还需要沉淀自己的基础能力,于是乎没有继续往CC链里爬,通过研究了一下ysoserial里的URLDNS链,决定自己尝试写一个类似却有些不同的exp,使自己的基础更加牢固一些,故有了今天这篇文章。 ysoserial里的URLDNS链我就不再多说,有兴趣的话自己可以去看下面这篇文章…