Rubyと筋肉とギターとわたし

筋トレが仕事です

【Golang】mapを作る

どうもてぃ。

ルビーやジャヴァスクリプトをやっていると毎回間違えるのでメモ。

対応関係

言語
ruby hash = {}
go map := map[string]interface{}
js object = {}

大まかに分類するとこんな感じ。

ただ、goの場合型を指定するため、対応する型以外はmapの中に入れられないです。rubyやjsのように動的にしたいなら…

map := map[interface{}]interface{}{}

と宣言すればよいですが、これだと型の恩恵がないのでほとんど使わない。

goやってるのならgoしましょう。

宣言方法

空のmap

// その1(明示的に書く)
var hoge map[string]int = map[string]int{}

// その2(makeを使う)
huga := make(map[string]int)
huga2 := make(map[string]int, 10) // 領域を確保して作成可能

// その3(簡略化)
hogo := map[string]int{}

そもそもmapを作成するのであれば、ある程度中身の構造が決まっているので構造体を使用することが多い。

が、その中でもその3の使用率が高いですね。

中身ありのmap

上とほとんど一緒かも。

// 明示的に
var foo map[string]string = map[string]string{"go": "hello echo", "ruby": "hello rails", "javascript": "hello react"}

// 簡略
bar := map[string]string{"go": "hello echo", "ruby": "hello rails", "javascript": "hello react"}

// 上の改行版
yoo := map[string]string{
  "go": "hello echo",
  "ruby": "hello rails",
  "javascript": "hello react",
}

// キー指定の代入
hash := make(map[string]string)
hash["go"] = "hello echo"
hash["ruby"] = "hello rails"
hash["javascript"] = "hello react"

最後に

もう忘れない(たぶん)。

次はmap[string]interface{}から構造体へ変換、またその逆もまとめる予定。