package main import "fmt" type Human struct { Name string Age int64 } func main() { m := make(map[string]Human) m["hum"] = Human{Name: "张三", Age: 18} //========== 实现修改Age字段值 ==========// // 下面的代码是错误的(无法通过编译) // m["hum"].Age = 22 fmt.Printf("俺叫%+v,今年%+v岁。\n", m["hum"].Name, m["hum"].Age) // 俺叫张三,今年18岁。 // 要实现修改Age字段值只能把map元素整个替换掉 tmp, ok := m["hum"] if ok { tmp.Age = 22 m["hum"] = tmp } fmt.Printf("俺叫%+v,今年%+v岁。\n", m["hum"].Name, m["hum"].Age) // 俺叫张三,今年22岁。 }
package main import "fmt" type Human struct { Name string Age int64 } func main() { m := make(map[string]*Human) m["hum"] = &Human{Name: "张三", Age: 18} // m["hum"].Age = 22 // 语法糖写法【不推荐】 (*m["hum"]).Age = 22 // 标准写法 【推荐】 fmt.Printf("俺叫%+v,今年%+v岁。\n", m["hum"].Name, m["hum"].Age) // 俺叫张三,今年22岁。 }
Copyright © 2024 码农人生. All Rights Reserved