我正在编写一个小型go应用程序,它在main.go中定义了一些全局consts,如下所示:
main.go
package main
import (
"github.com/JackBracken/global/sub"
)
const AppName string = "global string"
func main() {
sub.Run()
}
子/ sub.go
package sub
import "fmt"
func Run() {
fmt.Println(AppName)
}
我是Go的新手,希望这样的事情有效,但go build
会抛出错误sub/sub.go:6: undefined: AppName
。
我知道我可以做一些事情,例如创建globals
包,将其导入sub.go
并使用globals.AppName
等参考我的全局变量,但我想要知道它是否可能是我原来的方式,还是我只是完全误解范围和包裹?
答案 0 :(得分:4)
您无法在其他任何地方访问'main'包中的符号,原因很简单,Go不允许导入循环。
如果您需要访问“main”和其他软件包中的变量,则需要将变量移动到其他位置,以便两者都可以访问。所以你的'全球'套餐是正确的想法。