登录
首页 >  Golang >  Go问答

嵌入式结构与接口不工作

来源:stackoverflow

时间:2024-04-06 17:15:34 449浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《嵌入式结构与接口不工作》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

下面的代码无法从基本实体设置或获取值

如何使其能够获取基类以及继承的结构以返回值

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
}

您可以在 tour of go 的 Choosing a value or pointer receiver 部分找到更多详细信息。

今天关于《嵌入式结构与接口不工作》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>