Go:从子包中的main导入vars/consts

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.然后在这两个导入mainsubpackage

  • 很棒的答案:) (4认同)