setting.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package main
  2. import (
  3. "encoding/json"
  4. "os"
  5. )
  6. // Setting структура конфигурации сервера
  7. type Setting struct {
  8. ServerHost string
  9. ServerPort string
  10. PgHost string
  11. PgPort string
  12. PgUser string
  13. PgPass string
  14. PgBase string
  15. Data string
  16. Assets string
  17. Template string
  18. }
  19. // Переменная конфигурации
  20. var cfg Setting
  21. func init() {
  22. // Открываем файл конфигурации
  23. file, e := os.Open("setting.cfg")
  24. if e != nil {
  25. // Если файл открыть не удалось, останавливаем работу сервера
  26. panic("Файл конфигурации не был найден")
  27. }
  28. // Отложенный вызов функции. Файл будет закрыт когда функция init завершит работу
  29. defer file.Close()
  30. // Получить информацию о файле (размер файла, чтобы знать, сколько байт нужно выделить для его чтения)
  31. stat, e := file.Stat()
  32. if e != nil {
  33. panic("Не удалось получить информацю о файле конфигурации")
  34. }
  35. // Создаем переменную массив байтов с размером файла
  36. bytesForFileRead := make([]byte, stat.Size())
  37. _, e = file.Read(bytesForFileRead)
  38. if e != nil {
  39. panic("Не удалось прочитать файл конфигурации")
  40. }
  41. e = json.Unmarshal(bytesForFileRead, &cfg)
  42. if e != nil {
  43. panic("Не удалось считать данные файла конфигурации")
  44. }
  45. }