導入
スライスは「ここからここまで」と範囲を指定して、一部だけを取り出せます。この操作が名前(slice = 薄切り)の由来です。
説明
package main
import "fmt"
func main() {
letters := []string{"a", "b", "c", "d", "e"}
fmt.Println(letters[1:3]) // [b c] (1番目から3番目の手前まで)
fmt.Println(letters[:2]) // [a b] (先頭から2番目の手前まで)
fmt.Println(letters[3:]) // [d e] (3番目から最後まで)
}
letters[1:3]… 添字 1 以上 3 未満 を取り出す。「終わりの添字は含まない」のがルールです。[:2]は先頭からを省略、[3:]は末尾までを省略した書き方です。
「開始は含み、終了は含まない」(半開区間)は Go に限らず多くの言語で共通の約束です。要素数は「終了 − 開始」でちょうど計算できる、と覚えると間違えません(3 - 1 = 2 個)。
やってみよう
letters[1:3] が2個(b, c)なのに対し、letters[1:4] は3個(b, c, d)です。「終わりの添字は含まない」ことを、色々な範囲で確かめてみましょう。