package main
import "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 引用类型默认就是浅拷贝
}
有疑问加站长微信联系(非本文作者)