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
不是一个公开的方法