18 go
我有一个$GOPATH/dalu/myproject带有以下文件的Go项目:
main.go:
package main
import "dalu/myproject/subpackage"
var GV string = "World"
func main() {
subpackage.Hello()
}
Run Code Online (Sandbox Code Playgroud)
subpackage/subpackage.go:
package subpackage
import (
"fmt"
"dalu/myproject"
)
func Hello() {
//? fmt.Println("Hello"+GV)
}
Run Code Online (Sandbox Code Playgroud)
奖金(如果可以的话):我尝试了类似的更多子包,当尝试在main中导入一个子包,导入另一个子包,导入第一个提到的子包时,我得到"不允许导入循环"
Not*_*fer 40
正如编译器所说的那样,Go不允许循环依赖,并且与C++不同,这里没有前向声明技巧.
如果你有一个州:
A imports B AND B imports A
它会测量你需要移动他们之间分享的任何东西来打包C,并做:
A imports B, C AND B imports C
大家都很开心!
或者在你的例子中,添加一个名为的文件dalu/myproject/gv/gv.go并在其中定义它GV.然后在这两个导入main和subpackage