package mainimport "fmt"func main() { /* 深浅拷贝: 深拷贝:拷贝数据的副本,对原始数据没有影响 值类型的数据,默认都是深拷贝 int , float,string,bool,array,struct 浅拷贝:拷贝的是数据的地址, 引用类型的数据,默认都是浅拷贝 slice,map,function */ // slice,map 不需要手动添加&去取地址。 map1 := make(map[int]string) fmt.Println(map1) map1[1] = "aaa" map1[2] = "bbb" fmt.Println(map1) fmt.Printf("%p\n", map1) //1.深拷贝 a := 10 b := a //深拷 fmt.Println(a, b) b = 20 fmt.Println(a, b) //2.数组的深拷 arr1 := [4]int{1, 2, 3, 4} arr2 := arr1 fmt.Println(arr1, arr2) arr2[0] = 100 fmt.Println(arr1, arr2) //数组的浅拷贝 arr3 := &arr1 //(*arr3)[0] = 100 // 理论写法 arr3[0] = 100 //go优化写法,语法糖 fmt.Println(arr1, arr3) //3 引用类型默认就是浅拷贝}
文章来源:智云一二三科技
文章标题:go 深浅拷贝
文章地址:https://www.zhihuclub.com/5407.shtml