Go 系列教程 —— 13. Maps

ArisAries ·
``` func compareMap(m1, m2 map[string]int) { equalFlag := false if len(m1) == len(m2) { for key, value := range m1 { value1, ok := m2[key] if ok == true && value == value1{ equalFlag = true } else { equalFlag = false break } } } fmt.Println(equalFlag) } ```
#9
更多评论
一个建议, 应该加两个引号更好点 > 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