Чтение файла конфигурации в проекте Golang

Go

В настоящее время мы обычно помещаем конфигурацию в один файл конфигурации, и чтение файла также легко изменить.В проекте golang есть два типа файлов, которые могут читать конфигурацию.

  • Требуемые знания (разница между относительными путями "./", "../" и "/")

blog.CSDN.net/QQ_34769573…

  • каталог проекта
项目名
	|-config
	|	|-app.ini
	|-pkg
	|	|-setting
	|		|-setting.go
	|-main.go

1. ини-файл

1. Получите сторонние пакеты

import  "github.com/go-ini/ini"

2. Конфигурационный файл config/app.ini (пример)

RUN_MOD= debug

[server]
HTTP_PORT = 8081
READ_TIMEOUT = 60
WRITE_TIMEOUT = 60

3.pkg/setting./setting.идем читать настройки

var	Cfg *ini.File

type Server struct{
    HttpPort int
	ReadTimeout  time.Duration
	WriteTimeout time.Duration
}


func InitSetting(){
    var err error
    Cfg,err=ini.Load("conf")
    if err != nil{
        log.Fatal("Fail to Load ‘conf/app.ini’:",err)
    }
    
    //直接读取
    RunMode := Cfg.Section("").Key("RUN_MODE").MustString("debug")
    
    //读取内部配置
    server, err := Cfg.GetSection("server")
	if err != nil {
		log.Fatal("Fail to load section 'server': ", err)
	}
	HttpPort = server.Key("HTTP_PORT").MustUint(8080)
	ReadTimeout = time.Duration(server.Key("READ_TIMEOUT").MustUint(60)) * time.Second
	WriteTimeout = time.Duration(server.Key("WRITE_TIMEOUT").MustUint(60)) * time.Second
}

4. main.go

package main

func main {
	//初始化配置
	setting.InitSetting()
}

2.yaml файл (рекомендуется лично)

1. Получите сторонние пакеты

import	"gopkg.in/yaml.v2"

1.conf/app.yml конфигурационный файл

redis:
  host: 127.0.0.1:6379
  passwrod:
  timeout: 200
  #  最大活动连接数
  max_active: 30
  #  最大闲置连接
  max_idle: 30

pkg/setting/setting.go прочитать конфигурацию

type Set struct {
	Redis   Redis
	Postgre Postgre
	Gin     Gin
}

type Redis struct {
	Host      string `yaml:"host"`
	Password  string `yaml:"password"`
	Timeout   int    `yaml:"timeout"`
	MaxActive int    `yaml:"max_active"`
	MaxIdle   int    `yaml:"max_idle"`
	Db        int
}

var Setting = Set{}

func InitSetting() {
   file, err := ioutil.ReadFile("./conf/app.yml")
   if err != nil {
      log.Fatal("fail to read file:", err)
   }

   err = yaml.Unmarshal(file, &Setting)
   if err != nil {
      log.Fatal("fail to yaml unmarshal:", err)
   }

}

3. Ссылка на официальный документ

1.ini

github.com/go-ini/ini

2.yml

GitHub.com/go-press road/linen…