3章 合成型
from 初めてのGo言語
3.1 配列
定義方法
code:go
var x 3int
配列リテラルの定義方法
code:go
var x = 3int{1, 2, 3}
要素に対して値を指定
code:go
var x = 10int{1, 3: 10, 9: 5} // 1 0 0 10 0 0 0 0 0 5
var y = ...int{1, 3: 10, 9: 5} // ...で記載して大きさを指定しなくてもOK
fmt.Println(x == y) // true
多次元配列は以下のように設定
code:go
var x 23int // 0 0 0] [0 0 0
要素への代入は以下
code:go
var x = 3int{1, 2, 3}
x0 = 10 // 10, 2, 3
配列は配列の大きさは型として認識され、コンパイルする時点で確定され変更することができない
一度定義した配列の型を変更したりできない(x [3]intとx[4]intは別の値として認識され、変更することもできない)
そのためあまり配列を使用されることはない。可変長の配列を使用するときには、スライスを用いる
3.2 スライス
可変長配列を用いるときに使用する。一時的な配列データを保持するときなどに使用する
配列みたいに大きさを決まってなく、柔軟に変更できる
定義方法
code:go
var x = []int{1, 2, 3} // 1 2 3
配列を定義するときの大きさの値がない書き方をする
また上記の記法をスライスリテラルという
指定の要素に対して値を代入することも可能
code:go
var x = []int{1, 2, 3, 5: 4} // 1 2 3 0 0 4
x0 = 100 // 100 2 3 0 0 4
スライスのゼロ値はnilになる。nilは値がないことを意味する。nilは6章 ポインタで説明する。
code:go
var x []int
fmt.Println(x == nil) // true
スライス通しの比較はできない。比較したい場合は、標準ライブラリslicesを使用する。(nilだけは比較ができる)