切片就像数组的引用

切片并不存储任何数据,它只是描述了底层数组中的一段。

更改切片的元素会修改其底层数组中对应的元素。

与它共享底层数组的切片都会观测到这些修改。

slices-pointers.go

  1. package main
  2. import "fmt"
  3. func main() {
  4. names := [4]string{
  5. "John",
  6. "Paul",
  7. "George",
  8. "Ringo",
  9. }
  10. fmt.Println(names)
  11. a := names[0:2]
  12. b := names[1:3]
  13. fmt.Println(a, b)
  14. b[0] = "XXX"
  15. fmt.Println(a, b)
  16. fmt.Println(names)
  17. }