package main import ( "encoding/json" "os" ) // Setting структура конфигурации сервера type Setting struct { ServerHost string ServerPort string PgHost string PgPort string PgUser string PgPass string PgBase string Data string Assets string Template string } // Переменная конфигурации var cfg Setting func init() { // Открываем файл конфигурации file, e := os.Open("setting.cfg") if e != nil { // Если файл открыть не удалось, останавливаем работу сервера panic("Файл конфигурации не был найден") } // Отложенный вызов функции. Файл будет закрыт когда функция init завершит работу defer file.Close() // Получить информацию о файле (размер файла, чтобы знать, сколько байт нужно выделить для его чтения) stat, e := file.Stat() if e != nil { panic("Не удалось получить информацю о файле конфигурации") } // Создаем переменную массив байтов с размером файла bytesForFileRead := make([]byte, stat.Size()) _, e = file.Read(bytesForFileRead) if e != nil { panic("Не удалось прочитать файл конфигурации") } e = json.Unmarshal(bytesForFileRead, &cfg) if e != nil { panic("Не удалось считать данные файла конфигурации") } }