Go 系列教程 —— 13. Maps

ArisAries ·
map定义,初始化,遍历,删除,判断某键是否存在 ```go import "fmt" //map[keytype]valuetype,keytype是键的类型,valuetype是键对应值的类型 func main() { //1.光声明map类型没有初始化,a值就是nil var a map[string]int //没有初始化,在内存中就没有位置,不能直接a["sss"]=100,会报错的 fmt.Println(a == nil) //2.用make函数初始化,并添加键值对 a = make(map[string]int, 8) //8对应的是容量 a["hello"] = 100 //键值对 a["world"] = 200 a["hello"] = 400 fmt.Printf("a:%v\n", a) fmt.Printf("type:%T\n", a) fmt.Println(a["hello"]) //100 //3.声明map的同时初始化 b := map[int]bool{ 1: true, 2: false, } fmt.Printf("b:%v\n", b) fmt.Printf("type:%T\n", b) //4.判断某个键是否存在map中 value, ok := a["hello"] //如果存在,value的值就为该键对应的值(否则value就为0),ok就为true(否则为false) fmt.Println(value, ok) //100 true //5.map的遍历-for range循环,这样的map的遍历输出是无序的 for keytype, valuetype := range a { fmt.Println(keytype, valuetype) } //不想要valuetype,那就这样 for keytype := range a { fmt.Println(keytype) } //不想要keytype的值,就用匿名变量 for _, valuetype := range a { fmt.Println(valuetype) } //6.删除map中不想要的键对值,用delete函数 delete(a, "hello") //a为需要删除的map,"hello"为对应的keytype fmt.Println(a) } ``` 原文链接:https://blog.csdn.net/weixin_62281810/article/details/124598004,转载此篇文章
#13
更多评论
一个建议, 应该加两个引号更好点 > fmt.Printf("personSalary[\"%s\"] = %d\n", key, value) 然后做了一个比较map的小练习,刚学golang,非常感谢你的教程 ```go func compareMap(m1, m2 map[string]int) (result bool) { if len(m1) != len(m2) { result = false return } for k, v := range m1 { if v != m2[k] { result = false return } } return true } func main() { map1 := map[string]int{ "one": 1, "two": 2, } map2 := map1 result := compareMap(map1, map2) fmt.Println(result) // true map3 := map[string]int{ "one": 1, "two": 2, "three": 3, } result = compareMap(map1, map3) fmt.Println(result) // false } ```
#1
你的代码这一行有漏洞if v != m2[k] { 假如m2没有这一项 返回默认值0 如果m1对应的值正好是0 那么最终判断成相等
#2