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文のサンプル