我正在试验GoLang和接口以及结构继承。
我已经创建了一组结构,其中包含我可以在核心结构中保留常用方法和值的想法,然后只需继承它并在适当时添加额外的值:
type NamedThing interface {
GetName() string
GetAge() int
SetAge(age int)
}
type BaseThing struct {
name string
age int
}
func (t BaseThing) GetName() string {
return t.name
}
func (t BaseThing) GetAge() int {
return t.age
}
func (t BaseThing) SetAge(age int) {
t.age = age
}
type Person struct {
BaseThing
}
func main() {
p := Person{}
p.BaseThing.name = "fred"
p.BaseThing.age = 21
fmt.Println(p)
p.SetAge(35)
fmt.Println(p)
}
你也可以在go操场上找到它:
https://play.golang.org/p/OxzuaQkafj
然而,当我运行主要方法时,年龄仍为" 21"并且没有通过SetAge()方法更新。
我试图理解为什么这样做以及我需要做些什么来使SetAge正常工作。