我有一个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.
这是另一个例子(也在Go游乐场:https://play.golang.org/p/h2iVjM6Fpk):
package main import ( "fmt" ) var greeting = "Hello,world!" func main() { fmt.Println(greeting) }
另见Go Tour:“Variables”https://tour.golang.org/basics/8和“Exported names”https://tour.golang.org/basics/3.