【Golang】映射(字典)

【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

}