14、深拷贝和浅拷贝
1.深拷贝和浅拷贝的概念
深拷贝:
- 拷贝的是数据本身。
- 值类型的数据,默认都是深拷贝: array,int,float,string,bool,struct
浅拷贝:
- 拷贝的是数据地址。
- 导致多个变量指向同一块内存引用类型的数据
- 默认都是浅拷贝: slice,map
因为切片是引用类型的数据,直接拷贝的是地址。
2.切片的浅拷贝
/**
* @author ly (个人博客:https://www.cnblogs.com/qbbit)
* @date 2023/4/3 22:13
* @tags 喜欢就去努力的争取
*/
package main
import "fmt"
func main() {
// 切片的浅拷贝方式一:手动for循环一个个拷贝
s1 := []int{1, 2, 3, 4, 5}
s2 := make([]int, 0, 0)
for i := 0; i < len(s1); i++ {
s2 = append(s2, s1[i])
}
fmt.Println(s1)
fmt.Println(s2)
s2[1] = 100
fmt.Println(s1)
fmt.Println(s2)
// 切片的浅拷贝方式二:copy内置函数
s3 := []int{10, 20, 30, 40}
copy(s1, s3) // 将s3中的值copy到s1中
fmt.Println(s1)
fmt.Println(s3)
copy(s3[2:], s1[1:]) // 将s1中的值部分copy到s3中
fmt.Println(s1)
fmt.Println(s3)
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)