配列
まあ、普通に考えてリスト配列のことでインデックスと値で構成するもの
長さなどを設定する必要が有る感じがする
sample1.go
package main import ( "fmt" ) func main(){ fmt.Println("--- start ---") // 配列を定義して設定 var names[3] string names[0] = "aaaa" names[1] = "bbbb" names[2] = "cccc" // 出力 fmt.Println(names) // 配列の中身をすべて出力 fmt.Println(names[1:]) // インデックス1番目以降を出力 fmt.Println(names[2]) // インデックス2番めのみを出力 fmt.Println(len(names)) // 配列の数を返却 // 配列に要素数を指定しないで定義 nums := [...]string{"1111", "5555", "4444"} fmt.Println(nums) // 配列の中身をすべて出力 fmt.Println(len(nums)) // 配列の数を返却 fmt.Println("--- end ---") }
↓
$ go run sample1.go --- start --- [aaaa bbbb cccc] [bbbb cccc] cccc 3 [1111 5555 4444] 3 --- end --- $
map(連想配列)
sample2.go
package main import ( "fmt" ) func main(){ fmt.Println("--- start ---") // 初期化 var ages map[string]int = map[string]int{} // キーを生成して、設定 ages["10"] = 123 ages["20"] = 444 ages["30"] = 324 // 出力 fmt.Println(ages) // mapすべてを出力 fmt.Println(ages["10"]) // キー10を指定 fmt.Println(len(ages)) // キーの数 // for文で出力 for _key, _item := range ages { fmt.Println(_key, _item) } fmt.Println("--- end ---") }
↓
go run sample2.go --- start --- map[10:123 20:444 30:324] 123 3 10 123 20 444 30 324 --- end --- $
スライス
配列を動的に制御できるようにした感じ
一部分をコピーしたりすることができるとか
sample3.go
package main import ( "fmt" ) func main(){ fmt.Println("--- start ---") // 要素数を未指定で定義 var names[] string // 値を設定 names = []string{"1111", "2222", "3333"} fmt.Println(names) fmt.Println(len(names)) fmt.Println(cap(names)) // 追加 names = append(names, "vvvvvv") fmt.Println(names) fmt.Println(len(names)) fmt.Println(cap(names)) // cap以上に設定するとcapも追加されるか確認 names = append(names, "xxxxxxx") names = append(names, "3333333") names = append(names, "55555555") fmt.Println(names) fmt.Println(len(names)) fmt.Println(cap(names)) // 予め配列数とcapを設定する場合はmakeを使用 names = make([]string, 5, 10) names = append(names, "aaa") names = append(names, "bbb") fmt.Println("make list start") for i := 0; i < len(names); i++ { fmt.Println(i, names[i]) } fmt.Println("make list end") fmt.Println(len(names)) fmt.Println(cap(names)) fmt.Println("--- end ---") }
↓
$ go run sample3.go --- start --- [1111 2222 3333] 3 3 [1111 2222 3333 vvvvvv] 4 6 [1111 2222 3333 vvvvvv xxxxxxx 3333333 55555555] 7 12 make list start 0 1 2 3 4 5 aaa 6 bbb make list end 7 10 --- end --- $