// 先声明map var m1 map[string]string // 再使用make函数创建一个非nil的map,nil map不能赋值 m1 = make(map[string]string) // 最后给已声明的map赋值 m1["a"] = "aa" m1["b"] = "bb" // 直接创建 m2 := make(map[string]string) // 然后赋值 m2["a"] = "aa" m2["b"] = "bb" // 初始化 + 赋值一体化 m3 := map[string]string{ "a": "aa", "b": "bb", } // ========================================== // 查找键值是否存在 if v, ok := m1["a"]; ok { fmt.Println(v) } else { fmt.Println("Key Not Found") } // 遍历map for k, v := range m1 { fmt.Println(k, v) }
有疑问加站长微信联系(非本文作者)
为什么我初始化map[string]带名称的struct结构体{string:结构体构造}的时候出异常呢。很不懂
知道为什么了不在一行的时候最后一个要加,
@peterchain 为什么这两处,第一处user.User要用指针,第二处Person又不用指针了?
我从一个新人的角度想想,估计是User中实现了很多函数,指定了接受者是(s *User),所以前者使用了指针,而后面的Persion就是个struct,没必要再用指针了,偷了点懒,哈哈
@peterchain @freezer-glp 有个问题,personDB := make(map[string]Person) 这个情况下,使用 personDB["p"].Name = "aaa" 这样赋值 会出现错误
。。。
go不支持这个语法。