如何修改golang中的struct字段

iro*_*rom 8 struct go

我有例子play.golang.org/p/Y1KX-t5Sj9我在struct User上定义方法Modify()

type User struct {
  Name string
  Age int
}
func (u *User) Modify() {
  *u = User{Name: "Paul"}
}
Run Code Online (Sandbox Code Playgroud)

在main()中我定义了struct literal &User {Name:"Leto",Age:11}然后调用u.Modify().这导致打印' 保罗0 '我喜欢结构字段名称已更改,但保持Age字段的正确方法是什么?

Adr*_*ian 16

只需修改要更改的字段:

func (u *User) Modify() {
  u.Name = "Paul"
}
Run Code Online (Sandbox Code Playgroud)

这一点在Go游览中得到了很好的体现,您一定要仔细阅读,不需要很长时间.

  • 就像在需要时帮助其他人的注释一样 - 确保您的签名定义是一个指针:`func (u *User) Modify()`,而不是简单地作为一个值:`func (u User) Modify()` - 这抓住我了。 (30认同)