Edited at

[Go]連想配列やハッシュ的なキー管理で定番の、マップの使い方サンプル


いきなりサンプル


Go:mapの宣言と代入を別々に

package main

import "fmt"

func main() {

m := make(map[string]int)
m["maeda"] = 165
m["yamada"] = 175
m["suzuki"] = 180

fmt.Println(m) // => map[yamada:175 suzuki:180 maeda:165]
}



Go:mapの宣言と代入を同時に

package main

import "fmt"

func main() {

m := map[string]int{"maeda":165, "yamada":175, "suzuki":180}

fmt.Println(m) // => map[maeda:165 yamada:175 suzuki:180]
}



注意! v1.11系までは出力順がランダムに

実行していて気づいたのですが、どうやら実行する度に出力されるmapの順番が違います。


Go:実行の度に、mapの出力結果が変わる?

package main

import "fmt"

func main() {

m := map[string]int{"maeda":165, "yamada":175, "suzuki":180}
m["oda"] = 190

fmt.Println(m)
}



実行1回目

map[yamada:175 suzuki:180 oda:190 maeda:165]



実行例2回目

map[oda:190 maeda:165 yamada:175 suzuki:180]



実行例3回目

map[maeda:165 yamada:175 suzuki:180 oda:190]


こんな感じです。

基本的に、mapはキーの名前を指定して値を参照する、といった使い方になるかと思うので、それほど大きなトラブルにはならないかと思いますが、なんかもやっとしますね。笑

追記)

なお、コメントでご指摘頂いた通り、v1.12系からは出力が固定順に変更されているようです。