package main
import("fmt")funcmain(){
m :=make(map[string]int)
m["c"]=3
m["d"]=4
m2 :=map[int]struct{
x int}{1:{x:10},2:{x:200},}
fmt.Println(m, m2)}// result out:// map[d:4 c:3] map[1:{10} 2:{200}]
基本操作
package main
import"fmt"funcmain(){
m :=map[string]int{"a":1,"b":2,}
m["a"]=10// 修改字典值
m["c"]=20// 新增键值对
m["d"]=40if v, ok := m["c"]; ok {// 使用OK-idiom, 判断key是否存在, 返回值 println(v)}delete(m,"a")// 删除键值对
fmt.Println(m)}// result out:// 20// map[b:2 c:20 d:40]
package main
import"fmt"funcmain(){type user struct{
name string
age int}
m :=map[int]user{1:{"TOM",18},}// m[1].age += 1 // 错误: cannot assign to m[1].age
u := m[1]
u.age +=1
m[1]= u // 设置整个value
m2 :=map[int]*user {1:&user{"jack",20},}
m2[1].age++// m2[1]返回的是指针, 可透过指针修改目标对象}
package main
import"testing"functest()map[int]int{
m :=make(map[int]int)for i :=0; i <1000; i++{
m[i]= i
}return m
}functestCap()map[int]int{
m :=make(map[int]int,1000)for i :=0; i <1000; i++{
m[i]= i
}return m
}funcBenchmarkTest(b *testing.B){for i :=0; i < b.N; i++{test()}}funcBenchmarkTestCap(b *testing.B){for i :=0; i < b.N; i++{testCap()}}