いきなりサンプル
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系からは出力が固定順に変更されているようです。