看下面两个例子:
    a :=[5]int{2,3,4,5,6}
    b := a
    b[2]=77
    fmt.Println(a, b)
  • 1
  • 2
  • 3
  • 4

上面定义了一个数组a,它是值类型,复制给b是copy,当b发生变化后a并不会发生任何变化,结果如下: 
[2 3 4 5 6] [2 3 77 5 6]

但如果是切片则不然

    a :=[]int{2,3,4,5,6}
    b := a
    b[2]=77
    fmt.Println(a, b)
  • 1
  • 2
  • 3
  • 4

a和b本质上指向同一个底层数组

[2 3 77 5 6] [2 3 77 5 6]