配列の定義でGo言語ならではの注意点も含めて解説します

Go言語
この記事は約8分で読めます。
Go初学者
Go初学者

Go言語で配列を定義する方法や注意点があれば知りたいんだけど…

この記事ではGo言語の配列について理解することができます!
  • Go言語の配列の定義方法(通常の定義方法と省略した形の2種類)
  • 配列の型を確認する
  • 配列での注意点
  • Go言語の配列定義で覚えておきたい機能

配列はひとつの変数に複数の値を格納でき、用途に応じては変数を複数定義するよりも扱いやすいのが特徴です。

今回はGo言語では配列を定義する具体的な方法や注意点をお伝えしていきます。

もりぴ
この記事を書いた人

XHTML1.0時代にHTML&CSSを勉強した経験あり。無趣味だった私が2020年5月からプログラミング学習を開始し現在も挫折せずに趣味で学習を楽しんでいる51歳。プログラミングの楽しさをブログを通してお伝えしていきます。

もりぴをフォローする

Go言語での一般的な配列定義

一般的な配列の定義(初期化なし)

Go言語で配列を定義する一般的な記述は、以下の通りです。

var 変数名 [要素数]型

では、実際にコードで確認してみましょう。

// 配列の定義
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] = 100a[1] = 200 で値が代入されています。

MEMO

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

配列を初期化して定義する

配列も変数同様、定義時に初期化して値を代入することができます。

var 変数名 [要素数]型 = [要素数]型{値1, 値2, …}

// 配列の定義
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無し)で定義することができます。

変数名 := [要素数]型{値1, 値2, …}

// 配列の定義
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言語の配列は要素を追加することができません!

なので、配列を定義した要素数を超えて値を代入することができません。

もりぴ
もりぴ

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つ紹介いたします。

要素数を省略して配列を宣言

要素数を意識せずに配列を定義することができます。

変数名 := [...]型{値1, 値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言語の配列で押さえておくこと!
  • 一般的な配列の定義(初期化なし)
    var 変数名 [要素数]型
  • 一般的な配列の定義(初期化あり)
    var 変数名 [要素数]型 = [要素数]型{値1, 値2, …}
  • 値の代入と更新
    変数名[インデックス番後] = 値
  • 省略した形で配列定義
    変数名 := [要素数]型{値1, 値2, …}
  • 要素数を省略して配列を宣言
    変数名 := […]型{値1, 値2, …}
  • 配列は要素を追加することができない
  • 配列型という型がある

配列はプログラムで多く使用されます。

ぜひ、この機会にGo言語の配列定義をマスターしましょう。

comment

タイトルとURLをコピーしました