从子包访问全局var

时间:2017-04-20 14:07:51

标签: go

我正在编写一个小型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等参考我的全局变量,但我想要知道它是否可能是我原来的方式,还是我只是完全误解范围和包裹?

1 个答案:

答案 0 :(得分:4)

您无法在其他任何地方访问'main'包中的符号,原因很简单,Go不允许导入循环。

如果您需要访问“main”和其他软件包中的变量,则需要将变量移动到其他位置,以便两者都可以访问。所以你的'全球'套餐是正确的想法。