2022-10-28 02:34:12
在Go语言中,同一目录下文件的相互引用及命名冲突的避免,本质上是包机制的体现。以下是具体实现方式和规则:
一、同一目录下文件的相互引用若目录下有a.go和b.go,均声明package mypackage,则a.go中定义的函数可直接在b.go中调用。
若a.go中定义了func Foo(),则b.go中不能重复定义同名函数。
结构体、接口等类型名称也需遵循此规则。
a.go:package mypackagevar GlobalVar = "shared"func Foo() string { return "hello" }
b.go:package mypackagefunc Bar() { println(GlobalVar) // 直接访问a.go中的变量 println(Foo()) // 直接调用a.go中的函数}
在包目录外执行go run /mypackage/a.go /mypackage/b.go,或通过go build编译整个包。
错误示例:a.go和b.go中均定义type MyStruct struct{}。