一尘不染

如何在所有包中访问全局变量

go

我有一个main.go文件,其中有:

// running the router in port 9000
func main() {
    router,Global := routers.InitApp()
    fmt.println(Global)
    router.RunTLS(":9000" , "domain.crt" , "domain.key")
}

router.InitMap我要声明,可在我的应用程序的任何地方访问的全局变量。有可能吗?我试过了:

func InitApp() (*gin.Engine,string) {
        var Global= "myvalue"           
        router := gin.New()
        return router,Global


}

但是,Global即使在同一包中,我也无法访问变量。


阅读 479

收藏
2020-07-02

共1个答案

一尘不染

在顶层声明变量-在任何函数之外:

var Global = "myvalue"

func InitApp() (string) {
        var Global= "myvalue"
        return Global

}

由于变量的名称以大写字母开头,因此在导入定义变量的包并使用包名对其进行限定时,变量将在当前包中通过其名称可用-在任何其他包中都可用return packagename.Global

这是另一个示例(同样在Go游乐场中:https :
//play.golang.org/p/h2iVjM6Fpk):

package main

import (
    "fmt"
)

var greeting = "Hello, world!"

func main() {
    fmt.Println(greeting)
}

另请参阅Go Tour:“变量”
https://tour.golang.org/basics/8和“导出的名称”
https://tour.golang.org/basics/3

2020-07-02