Go 系列教程 —— 13. Maps

ArisAries ·
//比较两个map 是否相等(只比键) fmt.Println("---------------比较两个map 是否相等-------------------------") mapOne := map[string]string{"uid":"1","nickname":"jeck","age":"28"} mapTwo := map[string]string{"uid":"1","nickname":"jeck","age":"18","sex":"1"} is_identical := 0 if len(mapOne) == len(mapTwo) { for key,_ := range mapOne { _,ok = mapTwo[key] if !ok { is_identical = 1 } } }else{ is_identical = 1 } if is_identical > 0 { fmt.Println("mapOne和mapTwo不相等") }else{ fmt.Println("mapOne和mapTwo相等") }
#3
更多评论
一个建议, 应该加两个引号更好点 > 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