当前位置:  开发笔记 > 编程语言 > 正文

Golang结构继承不按预期工作?

如何解决《Golang结构继承不按预期工作?》经验,为你挑选了2个好方法。

看看这个沙箱

声明从不同结构继承的结构时:

type Base struct {
    a string
    b string
}

type Something struct {
    Base
    c string
}

然后调用指定继承值的值的函数会产生编译错误:

f(Something{
    a: "letter a",
    c: "letter c",
})

错误消息是:unknown Something field 'a' in struct literal.

这对我来说似乎非常奇怪.这真的是预期的功能吗?

谢谢您的帮助!



1> Leo Correa..:

Golang没有提供典型的继承概念.你在这里完成的是酝酿.

它不给外部结构提供内部结构的字段,而是允许外部结构访问内部结构的字段.

为了创建外部结构,Something您需要提供包含内部结构的字段Base

在你的情况下:

Something{Base: Base{a: "letter a"}, c: "letter c"}



2> Grzegorz Żur..:

您需要显式创建这样的Base字段

f(Something{
    Base: Base{a: "letter a"},
    c:    "letter c",
})

Go没有继承,只是组合.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有