配列

Go言語の配列初期化方法について解説

Go言語で配列を初期化する方法を解説します。

既に開発環境が整っている読者向けに、例えばvar arr [n]intといった基本的な記述例を交えながら、シンプルに初期化の手法を紹介します。

これにより、実践時にすぐ役立つ知識を得られます。

基本的な配列初期化方法

配列宣言の基本文法

固定長配列の定義方法

Go言語では固定長配列は[要素数]型の形式で定義します。

ここでは、整数型の固定長配列の定義例を示します。

package main
import (
	"fmt"
)
func main() {
	// 要素数が5のint型固定長配列を定義
	var arr [5]int
	// 初期値はゼロ値が設定される
	fmt.Println("Fixed array:", arr)
}
Fixed array: [0 0 0 0 0]

宣言と同時に初期値を設定する方法

配列宣言と同時に初期値を割り当てる場合は、リテラルを用いて初期化することができます。

以下は文字列型配列の例です。

package main
import "fmt"
func main() {
	// 宣言と同時に初期値を設定。配列の長さは初期値の数から推論される
	arr := [3]string{"Go", "Language", "Array"}
	fmt.Println("Initialized array:", arr)
}
Initialized array: [Go Language Array]

ゼロ値初期化の特徴

Go言語におけるデフォルト値の活用

Go言語では、変数を宣言するときに初期値を指定しない場合、各要素は型ごとのゼロ値が自動的に設定されます。

例えば、int型のゼロ値は0string型は空文字列になります。

以下の例は、明示的な初期化を行わない場合の動作を示します。

package main
import "fmt"
func main() {
	// 配列宣言時に初期値を設定しないと、int型はゼロ値の0が設定される
	var arr [4]float64
	fmt.Println("Zero value array:", arr)
}
Zero value array: [0 0 0 0]

初期化時のメリットと注意点

配列を宣言と同時に初期化すると、コードの可読性が向上し、意図しないデータ状態を避けることができます。

一方で、配列の長さや型の指定ミスには注意する必要があります。

固定長配列は要素数が厳格に管理されるため、後から要素数を変更することはできません。

応用的な初期化パターン

配列リテラルによる初期化

数値配列の初期化例

配列リテラルを活用すると、簡潔に配列を初期化できます。

以下は数値が並ぶ配列の例です。

package main
import "fmt"
func main() {
	// 数値配列をリテラルで初期化。長さはリテラルから自動推論される
	numArray := [5]int{1, 2, 3, 4, 5}
	fmt.Println("Numeric array:", numArray)
}
Numeric array: [1 2 3 4 5]

文字列配列の初期化例

文字列の配列も同様に、リテラルを用いて初期化が可能です。

リテラル内に初期値を列挙することで、手短に初期設定が実現できます。

package main
import "fmt"
func main() {
	// 文字列配列をリテラルで初期化。長さは自動推論される
	strArray := [...]string{"Go", "is", "Fun"}
	fmt.Println("String array:", strArray)
}
String array: [Go is Fun]

多次元配列の初期化方法

固定長多次元配列の定義

多次元配列も基本的な配列と同様に、宣言することができます。

以下の例では2次元配列を初期化しています。

package main
import "fmt"
func main() {
	// 2×3の整数型多次元配列を定義
	matrix := [2][3]int{
		{1, 2, 3},
		{4, 5, 6},
	}
	fmt.Println("2D array:", matrix)
}
2D array: [[1 2 3] [4 5 6]]

内部要素の個別初期化手法

固定長多次元配列の場合、各要素を個別に初期化する方法もあります。

必要な部分だけを後から値を代入することで柔軟な初期化が可能です。

package main
import "fmt"
func main() {
	// 2×2の整数型多次元配列を宣言し、各要素を個別に初期化
	var matrix [2][2]int
	matrix[0][0] = 10 // 1行1列目に値を設定
	matrix[0][1] = 20 // 1行2列目に値を設定
	matrix[1][0] = 30 // 2行1列目に値を設定
	matrix[1][1] = 40 // 2行2列目に値を設定
	fmt.Println("Individually initialized matrix:", matrix)
}
Individually initialized matrix: [[10 20] [30 40]]

エラー回避と注意点

型と要素数の整合性

固定長配列の特性理解

固定長配列は、宣言時に要素数が固定されるため、異なる要素数のリテラルを使った初期化はコンパイルエラーとなります。

次のサンプルは、正しい要素数で初期化している例です。

package main
import "fmt"
func main() {
	// 配列の要素数と初期化リテラルの個数が一致している
	arr := [2]int{10, 20}
	fmt.Println("Array with correct element count:", arr)
}
Array with correct element count: [10 20]

初期化時の一般的な落とし穴

コンパイルエラーの原因と対策

配列の初期化時に型や要素数の不一致が原因でコンパイルエラーが発生することがあります。

下記のコードはエラーになるサンプルコードのコメント付きの修正版です。

package main
import "fmt"
func main() {
	// 以下のコードは要素数が一致しないためコンパイルエラーになります
	// var errArray [3]int = [2]int{1, 2}
	// 正しい例として、要素数3で初期化した配列を使用する
	correctArray := [3]int{1, 2, 3}
	fmt.Println("Correct array initialization:", correctArray)
}
Correct array initialization: [1 2 3]

まとめ

本記事ではGo言語の固定長配列の定義や宣言と同時の初期化、ゼロ値初期化、多次元配列の初期化、およびエラー回避のポイントについて詳しく解説しました。

総括として、基本的な文法から応用パターンまで幅広く理解できる内容でした。

ぜひ実際にコードを書いて、習得を進めてください。

関連記事

Back to top button
目次へ