LoginSignup
17
7

More than 3 years have passed since last update.

【Golang】Go言語のmapについて解説

Posted at

今日は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 (マップ)

17
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
7