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

标签 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

最佳答案

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

var Global = "myvalue"

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

}

由于变量的名称以大写字母开头,因此当您导入定义变量的包并将其限定为在:return packagename.Global.

这是另一个插图(也在围棋 Playground 上: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 .

关于go - 如何在所有包中访问全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38655730/

相关文章:

go - 如果停止,如何自动重启 go web 服务器

windows - Go中终止进程的跨平台方式

rest - Golang 服务响应文件

xml - Go xml unmarshal 不起作用,除非我删除前面的 xml 版本 ="1.0"编码 ="ISO-8859-1"

Golang 微服务中间件允许任何类型但对端点严格

go - go获取golang包报错 "use of an internal package not allowed"怎么办?

go - 如何获取URL的最后一个路径段

go - flag.PrintDefaults 包括 `-test` 标志

opengl - Go-GL "Project"方法给出了意想不到的结果

go - 在 channel 中使用引用是否错误/不好?