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)
@simon_xia是正确的,看来您 可能 对Go有点陌生。
首先,欢迎来到社区!!
现在,请扩展一下他的评论… Go并未提供成员/方法的公共/私有范围,而是具有Exporting的概念。因此,如果要允许从另一个包访问方法,只需大写该方法的签名即可:)
Go在某种程度上满足了OOP的大多数 基本 功能,但重要的是要了解Go不是一种面向对象的语言。
我 强烈建议 您遍历整个“围棋之旅”,因为它符合“导出”的概念以及围棋语言的许多其他关键功能。整个巡演可以在一个下午完成,并做 了很多 让我加快速度在几年前的语言。
如果您之后仍然渴望更多,我发现“通过示例”是一个很棒的参考点,可以对一些主要主题进行更深入的研究。