ゼロ値
変数宣言したが、値を設定していない変数はゼロ値で初期化される。
型ごとのゼロ値
型 | ゼロ値 |
---|---|
数値 | 0 |
ブール型 | false |
文字列 | "" |
ポインタ、インターフェース | nil |
サンプル
package main
import "fmt"
func main() {
var n int
fmt.Println(n) // 0
var b bool
fmt.Println(b) // false
var s string
fmt.Println(s) // ""
var err error
fmt.Println(err) // nil
}
スライス
スライスは動的なサイズを持つ配列のようなデータ構造で、同じ型の要素を順序つけて格納する。
スライスは宣言時にサイズを指定する必要がない。
配列よりも柔軟で、スライスの方がより一般的に使用される。
スライスの作成
スライスの作成には複数の方法がある
package main
import "fmt"
func main() {
// `make`関数を使用する
a := make([]int, 5)
fmt.Println(a) // [0 0 0 0 0]
// リテラルを使用する
s := []int{1, 2, 3}
fmt.Println(s) // [1 2 3]
}
スライスの操作
package main
import "fmt"
func main() {
s := []int{1, 2, 3}
// インデックスによるアクセス
fmt.Println(s[0]) // 1
// 長さの確認
fmt.Println(len(s)) // 3
// スライスのスライス
s1 := s[1:3]
fmt.Println(s1) // [2 3]
}
参考