package main import ( "encoding/json" "fmt" "io/ioutil" "log" ) type AppConfig struct { Rpn struct { Url string `json:Url` UrlTest string `json:UrlTest` MD5P2P string `json:MD5P2P` MD5FAT string `json:MD5FAT` MIDP2P string `json:MIDP2P` MIDFAT string `json:MIDFAT` } `json:Rpn` LeanWork struct { MD5Key string `json:MD5Key` } `json:LeanWork` DB struct { Driver string `json:Driver` User string `json:User` Pass string `json:Pass` Schema string `json:Schema` } `json:DB` } var Config AppConfig func readConfig() error { log.Println("Read configration for production ") return readConfigFile("config.json") } func readConfigForTest() error { log.Println("Read configration for Test ") return readConfigFile("config.test.json") } func readConfigFile(file string) error { log.Printf("Read configration from %s", file) body, err := ioutil.ReadFile(file) if err != nil { log.Fatal("Fatal error Cannot read config ..") return err } err = json.Unmarshal(body, &Config) if err != nil { log.Fatal("cannot read config into json") return err } j, err := json.MarshalIndent(Config, "", "\t") if err != nil { log.Fatal("cannot print back to json") return err } fmt.Println(string(j)) return err }