package config import ( "encoding/json" "io/ioutil" "sync" ) var Cfg *Config type Config struct { LicenseCode string `json:"license_code"` ListenRTPPort int `json:"listen_rtp_port"` MaxClients int `json:"max_clients"` } var ( instance *Config once sync.Once ) func LoadConfig(filename string) *Config { once.Do(func() { data, err := ioutil.ReadFile(filename) if err != nil { panic(err) } instance = &Config{} if err := json.Unmarshal(data, instance); err != nil { panic(err) } }) return instance }