Go言語で配列をマスター: 基本から高度な操作までの詳細な使い方を紹介

Go

はじめに

Go言語における配列操作は、プログラミングスキルの基礎であり、効率的なプログラム作成に欠かせません。この記事では、Go言語における配列の基本的な作成方法から、より高度な操作方法までを具体的なコードサンプルとともに詳しく解説します。

Ginを使ってみる(インストールからHelloWorld表示まで)【Go言語】

流行りに乗ってGo言語を使ってみた(インストールからHelloWorld表示まで)
Go言語とは 2009年、GoogleでRobert Griesemer、ロブ・パイク、ケン・トンプソンによって設計された。Goは、静的型付け、C言語の伝統に則ったコンパイル言語、メモリ安全性、ガベージコレクション、構造的型付け(英語版)、...

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言語のチュートリアルを参照することをお勧めします。