接口不工作的嵌入式结构
Embedded Structure with interface not working
以下代码无法设置或获取基本实体的值
如何使基础和继承结构工作到 return 值
type BaseEntity struct {
Id string
}
func (p BaseEntity) SetId(Id string) {
p.Id = Id
}
func (p BaseEntity) GetId() string {
return p.Id
}
type Employee struct {
BaseEntity
Name string
}
type DataInterface interface {
SetId(Id string)
GetId() string
}
func getObjFactory() DataInterface {
//return Data.Employee{BaseEntity: Data.BaseEntity{}}
return new(Employee)
}
func main() {
entity := getObjFactory()
entity.SetId("TEST")
fmt.Printf(">> %s", entity.GetId())
}
方法 SetId
使用值接收器,因此 p
是对象的副本,而不是指向对象的指针。
相反,您想使用如下指针接收器:
func (p *BaseEntity) SetId(Id string) {
p.Id = Id
}
部分的 Go 之旅中找到更多详细信息
以下代码无法设置或获取基本实体的值
如何使基础和继承结构工作到 return 值
type BaseEntity struct {
Id string
}
func (p BaseEntity) SetId(Id string) {
p.Id = Id
}
func (p BaseEntity) GetId() string {
return p.Id
}
type Employee struct {
BaseEntity
Name string
}
type DataInterface interface {
SetId(Id string)
GetId() string
}
func getObjFactory() DataInterface {
//return Data.Employee{BaseEntity: Data.BaseEntity{}}
return new(Employee)
}
func main() {
entity := getObjFactory()
entity.SetId("TEST")
fmt.Printf(">> %s", entity.GetId())
}
方法 SetId
使用值接收器,因此 p
是对象的副本,而不是指向对象的指针。
相反,您想使用如下指针接收器:
func (p *BaseEntity) SetId(Id string) {
p.Id = Id
}
部分的 Go 之旅中找到更多详细信息