diff --git a/collection/README.md b/collection/README.md index be7bbf5..20b2f1d 100644 --- a/collection/README.md +++ b/collection/README.md @@ -10,3 +10,9 @@ append関数の使い方や仕組み +## map.go + +map + +- mapのメンバは変数ではないのでアドレスは取れない +- `delete(hoge, "key")` で要素の削除 diff --git a/collection/map.go b/collection/map.go new file mode 100644 index 0000000..f975dc7 --- /dev/null +++ b/collection/map.go @@ -0,0 +1,50 @@ +package main + +import "fmt" + +func main() { + cal := map[string]int{ + "Jan": 1, + "Feb": 2, + "Mar": 3, + "Apr": 4, + "May": 5, + "Jun": 6, + "Jul": 7, + "Aug": 8, + "Sep": 9, + "Oct": 10, + "Nov": 11, + "Dec": 12, + } + fmt.Printf("%+v\n", cal) // map[Apr:4 Aug:8 Dec:12 Feb:2 Jan:1 Jul:7 Jun:6 Mar:3 May:5 Nov:11 Oct:10 Sep:9] + fmt.Printf("%d\n", cal["Jan"]) // 1 + fmt.Printf("%d\n", cal["hoge"]) // 0 存在しない場合はゼロ値 + fmt.Printf("%d\n", len(cal)) // 12 + fmt.Println() + + for name, num := range cal {// 準不定 + fmt.Printf("%d: %s\n", num, name) + } + fmt.Println() + + v1 := map[string]int{} + v1["hoge"] = 100 + v1["fuga"] = 0 + { + v, ok := v1["hoge"] + fmt.Printf("v: %d ok: %v\n", v, ok) // v: 100 ok: true + } + { + v, ok := v1["fuga"] + fmt.Printf("v: %d ok: %v\n", v, ok) // v: 0 ok: true + } + { + v, ok := v1["piyo"] + fmt.Printf("v: %d ok: %v\n", v, ok) // v: 0 ok: false + } + + var v2 map[string]int + v2["fuga"] = 1 // panic +} +