今日はGoのmapについて学習したのでこちらにアウトプットします!!
#mapとは?
rubyでいうと、ハッシュ(連想配列)に該当するものです。
キーと値がセットになっているものです。
#とりあえず色々書いてみる
package main
import "fmt"
func main() {
m := map[string]int{"udon": 500, "ra-men": 800, "soba": 700}
fmt.Println(m) // => map[ra-men:800 soba:700 udon:500]
//値へのアクセス
fmt.Println(m["ra-men"]) // => 800
//値の更新
m["udon"] = 450
fmt.Println(m) // => map[ra-men:800 soba:700 udon:450]
//値の追加
m["new"] = 1000
fmt.Println(m) // => map[new:1000 ra-men:800 soba:700 udon:450]
//値が入っているか確かめることができる
v, ok := m["soba"]
fmt.Println(v, ok) // => 700 true
v2, ok2 := m["so-men"]
fmt.Println(v2, ok2) // => 0 false
//メモリ上に空のマップを作ってから代入することもできる
m2 := make(map[string]int)
m2["tya-han"] = 400
fmt.Println(m2) // => map[tya-han:400]
//こちらは宣言はしているがメモリ上に入れるマップがないのでエラーになる
var m3 map[string]int
m3["tya-han"] = 400
fmt.Println(m3) // => ERROR
//↑のようにvarで宣言した場合はmapのときはnilが入っている(スライスも同様)
var m3 map[string]int
if m3 == nil {
fmt.Println("Nil!") // => Nil!
}
//スライスの場合もnil
var s []int
if s == nil {
fmt.Println("Nil!") // => Nil!
}
}
##参考文献
こちらも併せて読んでいただけるとより理解が深まると思います!
Go言語: いろいろなマップの作り方まとめ
逆引きGolang (マップ)