dog.go
package dog
import "fmt"
type Dog struct {
Name string
}
func (this *Dog) callMyName() {
fmt.Printf("Dog my name is %q\n", this.Name)
}
main.go
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)
答案 0 :(得分:1)
@simon_xia是对的,看起来你可能对Go来说是一个新手。
首先,欢迎来到社区!!
现在为了扩展他的评论...而不是为成员/方法提供公共/私人范围,Go有Exporting的概念。因此,如果您想允许从另一个包访问方法,只需将方法的签名大写:)
OOP的大多数基本功能在某种程度上都得到了Go的满意,但了解Go is not an object-oriented language非常重要。
我强烈建议按照整个Tour of Go的方式工作,因为它符合导出这个概念以及Go语言的许多其他关键功能。整个旅程可以在一个下午结束,并且确实很多让我在几年前掌握语言的速度。
如果你在此之后仍然渴望更多,我发现Go By Example是一个很好的参考点,可以对一些主要话题进行更深入的研究。