#【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
}