我有一个$GOPATH/dalu/myproject带有以下文件的 Go 项目:main.go:package mainimport "dalu/myproject/subpackage"var GV string = "World"func main() { subpackage.Hello()}subpackage/subpackage.go:package subpackageimport ( "fmt" "dalu/myproject")func Hello() { //? fmt.Println("Hello"+GV)}奖励(如果可以的话):我尝试了更多子包的类似方法,当尝试在 main 中导入一个子包时,该子包会导入另一个导入第一个提到的子包的子包,我得到“不允许导入循环”
1 回答
米脂
TA贡献1836条经验 获得超3个赞
正如编译器所说的那样,Go 不允许循环依赖,并且与 C++ 不同,这里没有前向声明技巧。
如果你有一个州: A imports B AND B imports A
这意味着您需要将它们之间共享的任何内容移动到 package C
,然后执行以下操作: A imports B, C AND B imports C
每个人都很开心!
或者在您的示例中,添加一个名为的文件dalu/myproject/gv/gv.go
并在其中定义 this GV
。然后在这两个导入main
和subpackage
- 1 回答
- 0 关注
- 183 浏览
添加回答
举报
0/150
提交
取消