Array, Slice

Array

  • 予めサイズを指定して利用するのが配列
  • サイズを変更できないのが配列
func main() {
    // 宣言して、あとから値を入れる
    var arr [2]int
    arr[0] = 100
    arr[1] = 200
    fmt.Println(arr)

    // 宣言時に値を定義する
    var arr2 [2]int = [2]int{100, 200}
    fmt.Println(arr2)
}

Slices(スライス)

  • サイズを指定しない
  • []int で定義した場合は初期値は nil
  • make([]int, 2) で定義した場合は [0, 0] と初期値が入った状態になる
func main() {
    arr := []int{1, 2, 3, 4}
    fmt.Println(arr)
    // -> [1 2 3 4 5]
    
    // 3番目の値
    fmt.Println(arr[2])
    // -> 3
    
    // 0~1番目までの値の配列
    fmt.Println(arr[:2])
    // -> [1 2]
    
    // 2~最後までの値の配列
    fmt.Println(arr[2:])
    // -> [3 4 5]
    
    // すべての値の配列
    fmt.Println(arr[:])
    // -> [1 2 3 4 5]

    // 配列をネスト
    arr2 := [][]int{
        []int{1, 1, 1},
        []int{2, 2, 2},
    }
    fmt.Println(arr2)
    // -> [[1 1 1] [2 2 2]]

    // makeで作る場合はメモリーに確保される
    arr3 := make([]int, 3)
    fmt.Println(arr3)
    // -> [0 0 0]
}

ref