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

时间:2014-01-18 14:54:34

标签: go

我在 $GOPATH/dalu/myproject 上有一个Go项目,其中包含以下文件:

main.go

package main

import "dalu/myproject/subpackage"
var GV string = "World"

func main() {
    subpackage.Hello()
}

subpackage/subpackage.go

package subpackage

import (
    "fmt"
    "dalu/myproject"
)

func Hello() {
    //? fmt.Println("Hello"+GV)
}

奖金(如果可以的话): 我尝试了类似的更多子包,当尝试在main中导入一个子包导入另一个子包,导入第一个提到的子包我得到“导入循环不允许”

1 个答案:

答案 0 :(得分:37)

正如编译器所说的那样,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

中导入它