スライスの長さと容量
スライスには 長さ と 容量 の両方があります。
スライスの長さは、その中に含まれる要素の数です。
スライスの容量は、スライスの最初の要素から数えた基になる配列の要素の数です。
スライス s
の長さと容量は、式 len(s)
と cap(s)
を使用して取得できます。
スライスの容量が十分であれば、再スライスすることでスライスの長さを延長できます。 例のプログラムでスライス操作の1つを変更して、容量を超えて延長してみて、何が起こるかを確認してください。
package main
import "fmt"
func main() {
s := []int{2, 3, 5, 7, 11, 13}
printSlice(s)
// Slice the slice to give it zero length.
s = s[:0]
printSlice(s)
// Extend its length.
s = s[:4]
printSlice(s)
// Drop its first two values.
s = s[2:]
printSlice(s)
}
func printSlice(s []int) {
fmt.Printf("len=%d cap=%d %v\n", len(s), cap(s), s)
}