Go言語 配列のサンプル

Go言語の配列の仕組みと使い方のサンプルです。

目次 配列とは
  初期値ありで作成 / 要素の数を宣言して作成
  配列の値をfor文で取得する / 要素数を取得(len)
  配列の値をソートする

配列とは

  • 1つの変数で同じ型の複数の値を保持できます。
  • 各項目を要素(element)といいます。
  • 要素の順序をインデックス(添字)で管理します。上記図では[0]、[1]、[2]、[3]がインデックスです。
  • インデックスの先頭は0から始まります。
  • 最初に配列の数を決める必要があります。後から配列の数を変更できません。
  • 以下は、Go言語公式のEffective Goの配列のリンクです。
    https://golang.org/doc/effective_go.html#arrays

初期値ありで作成

package main
import "fmt"

func main(){

	a := [3]string {"赤","黄","青"}
	fmt.Println(a[0]) //赤
	fmt.Println(a[1]) //黄
	fmt.Println(a[2]) //青

	b := []int {1,2,3}
	fmt.Println(b[0]) //1
	fmt.Println(b[1]) //2
	fmt.Println(b[2]) //3
}

6行目は、string型の配列を作成しています。要素の数は3つです。
11行目は、int型の配列を作成しています。6行目のように[]の中に要素の数を指定しなくても作成できます。

要素の数を宣言して作成

配列の要素の数を宣言して作成するサンプルです。
値は後から追加します。

package main
import "fmt"

func main(){
	var a[3] string
	a[0] = "赤"
	a[1] = "黄"
	a[2] = "青"
	fmt.Println(a[0]); //赤
	fmt.Println(a[1]); //黄
	fmt.Println(a[2]); //青

	var b[3] int
	b[0] = 1
	b[1] = 2
	b[2] = 3
	fmt.Println(b[0]); //1
	fmt.Println(b[1]); //2
	fmt.Println(b[2]); //3
}

5行目は、String型の配列を作成しています。6~8行目は配列に値を設定しています。
13行目は、int型の配列を作成しています。14~16行目は配列に値を設定しています。

配列の値をfor文で取得する

package main

import "fmt"

func main() {
	color1 := []string{"赤", "黄", "青"}

	for a, b := range color1 {
		fmt.Println(a, b) //0 赤 1 黄 2 青
	}

	for _, b := range color1 {
		fmt.Println(b) //赤 黄 青
	}

	for i := 0; i < len(color1); i++ {
		fmt.Println(color1[i]) // 赤 黄 青が出力される
	}
}

6行目は、配列です。
8行目は、for文+rangeで配列のすべての要素にアクセスします。
9行目は、キーと値を表示します。
値のみを取得する場合は、12行目のように、キーに当たる部分をアンダースコア(_)にします。
16行目は、for文のループ変数で配列の添字を指定します。

要素数を取得(len)

package main

import (
	"fmt"
)

func main() {
	arr1 := [3]string{"赤", "黄", "青"}
	fmt.Println(len(arr1)) //3
}

lenで配列の要素数を取得できます。

配列の値をソートする

package main
import "fmt"
import "sort"

func main(){
	// 配列 数値
	a := []int {100,2,99}
	sort.Sort(sort.IntSlice(a))
	fmt.Println(a) // [2 99 100]が出力される

	// 配列 文字列
	b := []string {"da","abb","pccc"}
	sort.Strings(b)
	fmt.Println(b) // [abb da pccc]が出力される
}

7行目は、数値の配列です。
8行目でソートをしています。
結果は、2,99,100になります。100,2,99にはなりません。
12行目は、文字列の配列です。
13行目でソートをしています。
結果は、先頭の文字のabc順に表示されます。

関連の記事

Go言語 if文のサンプル
Go言語 for文 処理を繰り返す(break/continue)
Go言語 switch文のサンプル

△上に戻る