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

posted @   我也有梦想呀  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示