package main
import "fmt"
func main() {
arr1 := [...]int{
1, 2, 3}
arr2 := arr1 //值传递
arr2[0] = 100
fmt.Println(arr1, arr2) //[1 2 3] [100 2 3]
fmt.Printf("arr1地址:%p\narr2地址:%p\n", &arr1, &arr2) //arr1地址:0xc000018400 arr2地址:0xc000018420数组本身的地址不同只是copy数组里面的值
slice1 := []int{
1, 2, 3}
//引用的传递 就是把底层数组的地址0x...1给了slice2
//相当于 slice2和slice1 同时共有这个房间“使用权” 而切片本身也有一个内存地址需要用&slice1 &slice2 查看切片的地址
slice2 := slice1
slice2[0]
GO语言的slice是引用类型以及浅copy和深copy
最新推荐文章于 2022-06-05 11:46:56 发布