我正在编写一个小的 go 应用程序,它在 main.go 中定义了一些全局常量,如下所示:
main.go
package main
import (
"github.com/JackBracken/global/sub"
)
const AppName string = "global string"
func main() {
sub.Run()
}
Run Code Online (Sandbox Code Playgroud)
子/子.go
package sub
import "fmt"
func Run() {
fmt.Println(AppName)
}
Run Code Online (Sandbox Code Playgroud)
我对 Go 还很陌生,希望这样的事情能正常工作,但go build会引发错误sub/sub.go:6: undefined: AppName。
我知道我可以做一些事情,比如创建一个globals包,导入它sub.go并用globals.AppName等等来引用我的全局变量,但我想知道这是否可能是我原来的方式,或者我只是完全误解了范围和包?
您无法在其他任何地方访问 'main' 包中的符号,原因很简单,Go 不允许导入循环。
如果您需要访问 'main' 和其他一些包中的变量,则需要将变量移动到其他地方,到两者都可以访问的包中。所以你的“全局”包是正确的想法。