🧢
Goのnilスライスについて
はじめに
Goではつぎのようなnilスライスを定義できます。
var s []int32
この記事では、このnilスライスの挙動についてまとめます。
nilスライスの挙動
nilスライスに対して、以降の処理を実行したとき、どういった挙動になるか検証します。
nilスライスをprintしてみる
fmt.Println(s)
// []
nilとの比較
fmt.Println(s == nil)
// true
len関数を実行
fmt.Println(len(s))
// 0
cap関数を実行
fmt.Println(cap(s))
// 0
for rangeでループ
for _, _ = range s {
fmt.Println("foo") // 実行されない
}
append関数で要素を追加
s = append(s, 123)
fmt.Println(s)
// [123]
fmt.Println(len(s))
// 1
fmt.Println(cap(s))
// 2
Discussion