はじめに
Go言語における配列操作は、プログラミングスキルの基礎であり、効率的なプログラム作成に欠かせません。この記事では、Go言語における配列の基本的な作成方法から、より高度な操作方法までを具体的なコードサンプルとともに詳しく解説します。
Ginを使ってみる(インストールからHelloWorld表示まで)【Go言語】
Go言語における配列の定義
Go言語における配列は、同一の型を持つ複数の要素からなる固定長のデータ構造です。以下のように定義します。
var arr [5]int
arr[0] = 1
arr[1] = 2
fmt.Println(arr) // [1 2 0 0 0]
このコードは、5つの要素を持つ整数型の配列を作成し、最初の2つの要素に値を代入しています。
配列の長さと要素へのアクセス
配列の長さは組み込み関数のlen
を使用して取得できます。また、特定のインデックスにある配列の要素にアクセスするには、インデックスを角括弧内に記述します。
arr := [5]int{1, 2, 3, 4, 5}
fmt.Println(len(arr)) // 5
fmt.Println(arr[2]) // 3
配列のイテレーション
配列の全ての要素を順に取り出すには、for
ループとrange
キーワードを組み合わせます。
arr := [5]int{1, 2, 3, 4, 5}
for i, v := range arr {
fmt.Printf("Index: %d, Value: %d\n", i, v)
}
配列とスライス
Go言語では、配列よりも柔軟性の高いデータ構造としてスライスが用意されています。スライスは長さを動的に変更することが可能で、make
関数や既存の配列から作成することができます。
arr := [5]int{1, 2, 3, 4, 5}
slice := arr[1:4]
fmt.Println(slice) // [2 3 4]
配列の比較とコピー
Go言語では、同じ型と長さを持つ配列は==
演算子で比較可能です。
arr1 := [3]int{1, 2, 3}
arr2 := [3]int{1, 2, 3}
fmt.Println(arr1 == arr2) // true
また、配列は値渡しで扱われるため、配列をコピーした場合、新しい配列は元の配列とは独立した別の配列になります。
arr1 := [3]int{1, 2, 3}
arr2 := arr1
arr2[0] = 100
fmt.Println(arr1) // [1 2 3]
fmt.Println(arr2) // [100 2 3]
配列を関数に渡す
配列を関数に渡す際も値渡しで行われます。つまり、関数内で配列の要素を変更しても、元の配列には影響しません。しかし、配列の代わりにスライスを使用することで、関数内での変更が元のデータに反映されるようになります。
func modifyArray(arr [3]int) {
arr[0] = 100
}
func modifySlice(slice []int) {
slice[0] = 100
}
arr := [3]int{1, 2, 3}
modifyArray(arr)
fmt.Println(arr) // [1 2 3]
slice := arr[:]
modifySlice(slice)
fmt.Println(slice) // [100 2 3]
まとめ
これらの操作を理解し、適切に使用することで、Go言語のコードの可読性と効率性を大きく向上させることができます。更なる詳細やより高度な配列の操作については、公式のGoドキュメンテーションやさまざまなGo言語のチュートリアルを参照することをお勧めします。