スライスは配列への参照のようなものです

スライスはデータを保存せず、基になる配列のセクションを記述するだけです。

スライスの要素を変更すると、それに対応する基になる配列の要素が変更されます。

同じ基になる配列を共有する他のスライスは、その変更を確認します。

  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. }