
Go言語で配列を定義する方法や注意点があれば知りたいんだけど…
配列はひとつの変数に複数の値を格納でき、用途に応じては変数を複数定義するよりも扱いやすいのが特徴です。
今回はGo言語では配列を定義する具体的な方法や注意点をお伝えしていきます。
Go言語での一般的な配列定義
一般的な配列の定義(初期化なし)
Go言語で配列を定義する一般的な記述は、以下の通りです。
では、実際にコードで確認してみましょう。
// 配列の定義
package main
import "fmt"
func main() {
// 配列を宣言
var a [2]int
// 出力
fmt.Println(a)
}
// 出力結果
$ go run main.go
[0 0]
上記のコードでは、
- 変数名 a
- 要素数 2
- 型 int型
で定義しています。
出力結果を見てみると [0 0]
となっており、これは要素数が2つでint型の初期値 0
が格納されています。

[0 0]
の []
が配列を表しています。
配列に値を代入する
では、この配列に値を代入してみましょう。
// 配列の定義
package main
import "fmt"
func main() {
// 配列を宣言
var a [2]int
// 値を代入
a[0] = 100
a[1] = 200
// 出力
fmt.Println(a)
}
// 出力結果
$ go run main.go
[100 200]
a[0] = 100
と a[1] = 200
で値が代入されています。
a[0] = 100
の []
の中の数字はインデックス番号を表しています。
配列ではインデックス番号が 0
から割り振られますので覚えておきましょう。
配列での値の取り出し
配列からひとつずつ値を取り出してみましょう。
// 配列の定義
package main
import "fmt"
func main() {
// 配列を宣言
var a [2]int
// 値を代入
a[0] = 100
a[1] = 200
// 出力
fmt.Println(a)
// 値のひとつづつ取り出し
fmt.Println("a[0] =", a[0])
fmt.Println("a[1] =", a[1])
}
// 出力結果
$ go run main.go
[100 200]
a[0] = 100 // a[0]の値
a[1] = 200 // a[1]の値
配列のインデックス番号を指定して値を取り出すことができます。
配列での値の更新
配列の値を更新することができ、更新の方法は値の代入と同じです。
// 配列の定義
package main
import "fmt"
func main() {
// 配列を宣言
var a [2]int
// 値を代入
a[0] = 100
a[1] = 200
// 出力
fmt.Println(a)
// 値の更新
a[0] = 500
// 出力
fmt.Println(a)
// 値のひとつづつ取り出し
fmt.Println("a[0] =", a[0])
fmt.Println("a[1] =", a[1])
}
// 出力結果
$ go run main.go
[100 200]
[500 200] // 値が更新された
a[0] = 500 // 値が更新された
a[1] = 200
配列を初期化して定義する
配列も変数同様、定義時に初期化して値を代入することができます。
// 配列の定義
package main
import "fmt"
func main() {
// 配列を初期化して定義
var arr [3]int = [3]int{100, 200, 300}
// 出力
fmt.Println(arr)
}
// 出力結果
$ go run main.go
[100 200 300]
Go言語の配列を省略した形で定義する(var無し)
Go言語では配列を省略した形(var無し)で定義することができます。
// 配列の定義
package main
import "fmt"
func main() {
// 省略形で配列を定義する
arr2 := [3]int{1, 2, 3}
// 出力
fmt.Println(arr2)
}
// 出力結果
$ go run main.go
[1 2 3]

配列は省略した形の方がスッキリしてますよね。型もわかるし。
Go言語の配列で注意すること
Go言語の配列定義の基本を押さえたところで、配列で注意すべき点があります。
なので、配列を定義した要素数を超えて値を代入することができません。

Go言語では配列に似たスライスというのがあり、スライスは要素を追加することができます。
これを理解するには、定義した配列の型を調べればわかります。
配列の型を調べてみよう
先程のコードを利用して、 arr2
の型を調べてみましょう。
// 配列の定義
package main
import "fmt"
func main() {
// 省略形で配列を定義する
arr2 := [3]int{1, 2, 3}
// 型を調べる
fmt.Printf("arr2の型は %T です。\n", arr2)
}
// 出力結果
$ go run main.go
arr2の型は [3]int です。

arr2
は [3]int
型なんです!
これを配列型と言い、配列では要素数も含めて型となります。
配列は要素を超えた値を追加することができないことが理解できるのではないでしょうか。
Go言語の配列定義で覚えておきたい機能2選
今までお伝えしていない、Go言語の配列定義で覚えておきたい機能を2つ紹介いたします。
要素数を省略して配列を宣言
要素数を意識せずに配列を定義することができます。
要素数を記述するところを ...
にすることで、要素数を自動的にカウントしてくれます。

今までint型で配列を定義していたので、string型で定義しますね。
// 配列の定義
package main
import "fmt"
func main() {
// 要素数を省略して配列を宣言
// [...]は要素数を自動的にカウントしてくれる
arr3 := [...]string{"Hello", "World"}
// 型を調べる
fmt.Printf("arr3の型は %T です。\n", arr3)
// 値を出力
fmt.Println(arr3)
}
// 出力結果
$ go run main.go
arr3の型は [2]string です。
[Hello World]
要素数を指定しないくても、自動的に要素数をカウントして出力しています。
配列の要素数を調べる
配列の要素数を調べる関数が len関数
です。
// 配列の定義
package main
import "fmt"
func main() {
// 要素数を省略して配列を宣言
// [...]は要素数を自動的にカウントしてくれる
arr3 := [...]string{"Hello", "World"}
// 型を調べる
fmt.Printf("arr3の型は %T です。\n", arr3)
// len関数を使って要素数を調べる
fmt.Println("要素数は", len(arr3), "です。")
// 値を出力
fmt.Println(arr3)
}
// 出力結果
$ go run main.go
arr3の型は [2]string です。
要素数は 2 です。
[Hello World]
len関数
は、for文で結構使用される関数なので覚えておきましょう。
【まとめ】Go言語の配列定義について
今回はGo言語の配列についてお伝えしてきました。
配列はプログラムで多く使用されます。
ぜひ、この機会にGo言語の配列定義をマスターしましょう。
comment