从子包中的 main 导入 vars/consts

我有一个$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 中导入一个子包时,该子包会导入另一个导入第一个提到的子包的子包,我得到“不允许导入循环”


缥缈止盈
浏览 184回答 1
1回答

米脂

正如编译器所说的那样,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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go