スライスの長さと容量

スライスには 長さ容量 の両方があります。

スライスの長さは、その中に含まれる要素の数です。

スライスの容量は、スライスの最初の要素から数えた基になる配列の要素の数です。

スライス s の長さと容量は、式 len(s)cap(s) を使用して取得できます。

スライスの容量が十分であれば、再スライスすることでスライスの長さを延長できます。 例のプログラムでスライス操作の1つを変更して、容量を超えて延長してみて、何が起こるかを確認してください。

  1. package main
  2. import "fmt"
  3. func main() {
  4. s := []int{2, 3, 5, 7, 11, 13}
  5. printSlice(s)
  6. // Slice the slice to give it zero length.
  7. s = s[:0]
  8. printSlice(s)
  9. // Extend its length.
  10. s = s[:4]
  11. printSlice(s)
  12. // Drop its first two values.
  13. s = s[2:]
  14. printSlice(s)
  15. }
  16. func printSlice(s []int) {
  17. fmt.Printf("len=%d cap=%d %v\n", len(s), cap(s), s)
  18. }