LoginSignup
0
0

More than 3 years have passed since last update.

【Golang】マップ(辞書)

Posted at

【Golang】マップ(辞書)

Golangの基礎学習〜Webアプリケーション作成までの学習を終えたので、復習を兼ねてまとめていく。 基礎〜応用まで。

package main
//map 連組配列 Pythonでいう辞書
//関数では参照渡しされるので、本体の値も変わる。配列とは違う。


import "fmt"

func main() {
    //宣言
    //mapを作成 pythonの辞書型のような感じ
    //map[キーの型]値の型{中身}
    m := map[string]int{"a": 100, "b": 200}
    fmt.Println(m)
    //>>map[a:100 b:200]
    //値取り出し
    fmt.Println(m["a"])
    //>>100

    //宣言
    //make(map[キーの型]値の型, キャパシティの初期値)
    //make(map[キーの型]値の型)// キャパシティの初期値は、省略も可能
    //初期化。空を作成
    m2 := make(map[string]int)
    fmt.Println(m2)
    //>>map[]

    //宣言
    var m3 = map[string]string{"A":"AAA", "B": "BBB"}
    fmt.Println(m3)
    //>>map[A:AAA B:BBB]




    //上書き
    m["b"] = 300
    fmt.Println(m)
    //>>map[a:100 b:300]

    //追加
    m["new"] = 500
    fmt.Println(m)
    //>>map[a:100 b:300 new:500]

    //無いものを取り出す
    //0が返ってくる
    fmt.Println(m["nothing"])
    //>>0

    //vに値(100),okはエラーでTrue(False)が返ってくる
    //okは書かなければ無視することもできる
    v, ok := m["a"]
    fmt.Println(v, ok)
    //>>100 true

    v2, ok2 := m["nothing"]
    fmt.Println(v2, ok2)
    //>>0, false




    //追加
    m2["pc"] = 5000
    fmt.Println(m2)
    //>>map[pc:5000]


    //削除
    delete(m2, "pc")
    fmt.Println(m2)
    //>>[]



    //宣言だけしてもメモリー上に存在しない==nilなので、追加できない
    //makeが必要
    /*
        var m3 map[string]int
        m3["pc"] = 5000
        fmt.Println(m3)
    */



    //if文
    //宣言だけの場合nilになってしまう。
    //Nilが表示される
    var s []int
    if s == nil {
        fmt.Println("Nil")
    }
    //>>Nil

}

0
0
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
0
0