Inheritance 如何嵌入其他包';戈朗的s结构 我知道如何在同一个包的struct中嵌入其他struct,但如何嵌入其他包的struct?
狗,走Inheritance 如何嵌入其他包';戈朗的s结构 我知道如何在同一个包的struct中嵌入其他struct,但如何嵌入其他包的struct?,inheritance,go,struct,embed,Inheritance,Go,Struct,Embed,狗,走 package dog import "fmt" type Dog struct { Name string } func (this *Dog) callMyName() { fmt.Printf("Dog my name is %q\n", this.Name) } 梅因,加油 package main import "/path/to/dog" type BDog struct { dog.Dog name string } func
package dog
import "fmt"
type Dog struct {
Name string
}
func (this *Dog) callMyName() {
fmt.Printf("Dog my name is %q\n", this.Name)
}
梅因,加油
package main
import "/path/to/dog"
type BDog struct {
dog.Dog
name string
}
func main() {
b := new(BDog)
b.Name = "this is a Dog name"
b.name = "this is a BDog name"
b.callMyName()
}
当我运行main.go时,它会告诉我一个错误:
./main.go:14: b.callMyName undefined (type *BDog has no field or method callMyName)
@西蒙夏是对的,看起来你可能有点新鲜 首先,欢迎来到社区 现在,让我们对他的评论进行一点扩展。。。Go的概念不是为成员/方法提供公共/私有范围,而是。因此,如果希望允许从另一个包访问某个方法,只需将该方法的签名大写:) OOP的大多数基本特性在某种程度上都可以通过Go得到满足,但理解这一点很重要 我强烈建议您在整个过程中努力工作,因为这不仅符合导出的概念,而且符合Go语言的许多其他关键特性。整个巡演可以在一个下午完成,几年前,为了让我快速掌握这门语言,它做了很多工作
如果你在那之后仍然渴望得到更多,我发现这是一个很棒的参考点,可以对一些主要主题进行更深入的研究。
callMyName
不是一个公开的方法