接口不工作的嵌入式结构

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
}

您可以在 Choosing a value or pointer receiver.

部分的 Go 之旅中找到更多详细信息