Set global variable only once in golang

I have a main.go file that has:

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

In another gofile I have

package utils
var ConfigMap = GetAppConfig
func GetAppConfig() map[string]string{
 ....//
}

ConfigMap is a global variable, every time I try to access a utils.ConfigMapfunction is called GetAppConfig. How can I call this function only once, when the application will be initialized, and then access the ConfigMap anyehere that I want in the go project.

+4
source share
2 answers

This is what is for the package init(). They are executed once before your package can be reached "outside":

var ConfigMap map[string]string

func init() {
    // Init ConfigMap here
}

, , . .

ConfigMap :

var configMap[string]string

-, Mutex:

var confMux = &sync.Mutex{}

func Config(name string) string {
    confMux.Lock()
    defer confMux.Unlock()
    return configMap[name]
}
+7

, , , . configMap init :

var configMap map[string]string

, init :

var configMap = map[string]string{}

configMap, init, , init. init , - . var init, .

configMap = map[string]string{}

.

:

var configMap = GetAppConfig

:

var configMap = GetAppConfig()

, .

0

Source: https://habr.com/ru/post/1649523/


All Articles