Goの配列は要素数を宣言する。宣言した数を超える要素は格納できない。少ない分には可能。Goは配列よりスライスの方がよく使われるらしい。
配列の基本
配列の宣言はvar 配列名[要素数]型名 の形で行う。値の格納と同時に宣言する場合は、波括弧に要素を格納する。
array.go
package main
import "fmt"
func main() {
//配列の変数宣言 + 角括弧[]の中に格納するデータ数 + データの型名を記述
var num [5]int
num[0] = 1000
num[1] = 2000
num[2] = 3000
num[3] = 4000
num[4] = 5000
fmt.Println(num)
//要素の値を代入して宣言する。
//配列の変数宣言 + イコール + 要素数と型名 + 波括弧{}内に要素の値を格納。
var city [5]string = [5]string{"NY", "Paris", "London", "Sydney", "Tokyo"}
fmt.Println(city)
}
結果
$ go run array.go
[1000 2000 3000 4000 5000]
[NY Paris London Sydney Tokyo]
要素数の増減
先述の通り、宣言した数を超える要素は格納できないが、少ない分には可能。要素の数が足りていなくても宣言した要素数は保持される。
array2.go
package main
import "fmt"
func main() {
//宣言した要素数より多い要素の格納は不可。
//宣言した要素数より少ない要素数の格納は可能。
var city [5]string = [5]string{"NY", "London", "Sydney", "Tokyo"}
fmt.Println(city)
//配列の要素数を出力
//この場合実際に格納した数ではなく宣言した数を出力する
fmt.Println(len(city))
}
結果
$ go run array2.go
[NY London Sydney Tokyo ]
5
配列の要素へのアクセス
以下のように記述して配列の要素を取得できる。
変数名 := 配列名[インデックス値]
例
c0 := city[0]
array3.go
package main
import "fmt"
func main() {
var city [5]string = [5]string{"NY", "Paris", "London", "Sydney", "Tokyo"}
//配列の要素すべて出力
fmt.Println(city)
//配列の要素を取得して変数に格納
c0 := city[0]
c1 := city[1]
c2 := city[2]
c3 := city[3]
c4 := city[4]
//個別の要素を出力
fmt.Println(c0)
fmt.Println(c1)
fmt.Println(c2)
fmt.Println(c3)
fmt.Println(c4)
}
結果
$ go run array3.go
[NY Paris London Sydney Tokyo]
NY
Paris
London
Sydney
Tokyo
参考
【Go入門】配列(Array)の宣言と要素へのアクセス