我正在尝试编写一个包含多个子项目的Go项目。举个简单的例子,该项目如下所示
Main
|- package one
|- package one.one
|- package one.two
|- package two
从我的主包中,我可以通过导入它们来使用任何子包的任何功能或结构。但我的问题是如何从任何子包访问 main 的结构或函数。
通过导入 main.c 中的“子包”。但不要产生导入循环(在这种情况下重构您的代码)。
请注意,Go 有(几乎*)没有 _sub_package 的概念:这些都是普通包,目录布局对导出函数、类型、方法、字段、变量和常量的导入和可用性/可访问性没有没有影响。
*) 内部包和供应商包取决于目录布局。
package oneone
var(
x string
)
//x is copied here, we can also pass a pointer if original value is needed
func RegisterX(outsideX string) {
x = outsideX
}
------
package main
func main() {
...
x := "outside X"
oneone.RegisterX(x)
}