今回はgolangにおけるスライスについて解説していきます。
目次
スライスとは
golangにはSlice(スライス)というデータ構造があり、他の言語でいう配列と似ていますが、微妙に異なります。
golangにおける配列は宣言した時点で型とサイズが決められていますが、スライスはサイズが決められていません。 必要に応じてデータ領域を割り当て直すことで、動的な配列のような振る舞いをします。
スライスは以下のように宣言をします。[]の中には何も書かないことでサイズ指定がなくなり、スライスとなります。
a := []int{1, 2, 3, 4, 5}
fmt.Println(a)
上記のPrinlnの結果は[1 2 3 4 5]となります。
a := []int{1, 2, 3, 4, 5}
fmt.Println(a[2])
配列と同様にスライスの要素にはインデックスでアクセスすることができます。こちらの結果は3です。
他にもインデックスを範囲指定してアクセスする方法があります。
a := []int{1, 2, 3, 4, 5}
fmt.Println(a[2:4]) // [3 4]
fmt.Println(a[:2]) // [1 2]
fmt.Println(a[2:]) // [3 4 5]
fmt.Println(a[:]) // [1 2 3 4 5]
[2:4]とすることで2番目から3番目を、[:2]とすることで2番目までを、[2:]とすることで2番目からを、【:】とすることで全ての要素をそれぞれ取得することができます。
スライスの書き換え
スライスの値を書き換えるには以下のようにインデクス指定して代入します。
a := []int{1, 2, 3, 4, 5}
a[2] = 50
fmt.Println(a)
書き換えられたことで[1 2 50 4 5]と出力されます。
スライスの中にスライスを入れる
スライスの中にスライスを入れる方法もあります。
var aa = [][]int{
[]int{0, 1, 2},
[]int{3, 4, 5},
[]int{6, 7, 8},
}
fmt.Println(aa)
[]を二つ重ねることで入れ子にすることができます。こちらの結果は[[0 1 2] [3 4 5] [6 7 8]]となります。
スライスに値を追加する
配列と同様にappendを使うことでスライスに値を追加することができます。
a := []int{1, 2, 3, 4, 5}
a = append(a, 10, 20)
fmt.Println(a)
[1 2 3 4 5 10 20]と出力され、スライスaに新たに10,20が追加されたことが分かります。
golangをもっと詳しくなりたい方に
golang学習のために筆者が実際に受講したUdemy教材をまとめています。
golang学習のために筆者が実際に読んでおすすめしたい本をまとめています。
【入門】golangの学習におすすめの本/書籍7選
これから業務でgolangを使うことになった方、これからgolangを使ってキャリアを歩んでいきたいという方でどのように学習していこうか悩んでいる方もいるかと思います。 ...