Go の基礎

Go Slices: append, len and cap

The list type you will use most in Go: grow it with append, cut it with [a:b], and watch out for shared memory.

  • 初級
  • 約3分で読めます
  • 実行できるサンプル 1 件
学べること
  • append
  • Slicing with [a:b]
  • make, len and cap
numbers[1:4]
30
11
42
13
54
The slice covers indexes 1, 2 and 3.

A growable view of an array

A slice is a view of an array that can grow. It is the list type you will use most in Go. append adds items and returns the updated slice.

numbers[1:4] takes the items at positions 1, 2 and 3. That new slice shares memory with numbers, so changing middle[0] also changes numbers[1]. make creates an empty slice with room for three items, and cap shows that room.

重要なポイント

  1. append returns the updated slice.
  2. numbers[1:4] has the items at 1, 2 and 3.
  3. A slice shares memory with the slice it was cut from.

実行できる Go のサンプル

Go
コードを実行 →
main.go
package main

import "fmt"

func main() {
	numbers := []int{3, 1, 4}
	numbers = append(numbers, 1, 5)
	fmt.Println(numbers, len(numbers))

	middle := numbers[1:4]
	fmt.Println(middle)

	middle[0] = 100 // a slice shares the array it was cut from
	fmt.Println(numbers)

	squares := make([]int, 0, 3)
	for i := 1; i <= 3; i++ {
		squares = append(squares, i*i)
	}
	fmt.Println(squares, len(squares), cap(squares))

	for index, value := range squares {
		fmt.Println(index, value)
	}
}
この例の実行ボタンを作成 実行結果
[3 1 4 1 5] 5
[1 4 1]
[3 100 4 1 5]
[1 4 9] 3 3
0 1
1 4
2 9

練習

サンプルをオンラインコンパイラーで開き、値を変えたり行を追加したりして、実行する前に出力を予想してみましょう。次に、わざとコードを壊してコンパイラーのメッセージを読んでみてください。

このレッスンを終えましたか?

学習済みにすると進み具合を記録できます。

次へ: Maps →

チャレンジで練習する

このレッスンの内容を使って実際の問題を解きましょう。各チャレンジはブラウザで動き、すぐにテストされ、AI のレビューも受けられます。

すべてのチャレンジ