chan类型复制
//chan的复制
chan1 := make(chan int, 2)
chan2 := chan1
chan1 <- 1
v := <-chan2
fmt.Println(v)
程序是可以输出1的
断点查看chan1,chan2的结构状态
发现只要改变了chan1的状态,chan2也会自动更新
再来看下slice类型的复制
//slice的复制
slice1 := make([]int, 10, 20)
slice2 := slice1
slice1[1] = 2
fmt.Println(slice1, slice2) //输出[0 2 0 0 0 0 0 0 0 0] [0 2 0 0 0 0 0 0 0 0]
slice1 = append(slice1, 1)
fmt.Println(slice1, slice2) //[0 2 0 0 0 0 0 0 0 0 1] [0 2 0 0 0 0 0 0 0 0]
虽然slice1改变了自己的len字段,但是slice2却没跟着一起变化
所以 golang里面make出来的引用类型也是有区别的