J'ai un fichier main.go qui a:
// running the router in port 9000
func main() {
router,Global := routers.InitApp()
fmt.println(Global)
router.RunTLS(":9000" , "domain.crt" , "domain.key")
}
Dans router.InitMap, je souhaite déclarer une variable globale accessible partout dans mon application. Est-ce possible? j'ai essayé
func InitApp() (*gin.Engine,string) {
var Global= "myvalue"
router := gin.New()
return router,Global
}
Mais je peux accéder à la variable Global
même dans le même package.
déclarer une variable au niveau supérieur - en dehors de toute fonction:
var Global = "myvalue"
func InitApp() (string) {
var Global= "myvalue"
return Global
}
Étant donné que le nom de la variable commence par une lettre majuscule, la variable sera disponible à la fois dans le package actuel par son nom - et dans tout autre package lorsque vous importez le package définissant la variable et que vous le qualifiez avec le nom suivant: return packagename.Global
.
Voici une autre illustration (également dans la cour de récréation de Go: https://play.golang.org/p/h2iVjM6Fpk ):
package main
import (
"fmt"
)
var greeting = "Hello, world!"
func main() {
fmt.Println(greeting)
}
Voir aussi Go Tour: "Variables" https://tour.golang.org/basics/8 et "Noms exportés" https://tour.golang.org/basics/3 .
Il est préférable d'utiliser la fonction init pour l'initialisation des variables globales. Il sera également traité une seule fois, même plusieurs fois de ce paquet. https://play.golang.org/p/0PJuXvWRoSr
package main
import (
"fmt"
)
var Global string
func init() {
Global = InitApp()
}
func main() {
fmt.Println(Global)
}
func InitApp() (string) {
return "myvalue"
}