Go中配置文件读取的几种方式

本文介绍了Go语言中读取四种常见配置文件格式——json、key-value、yaml、toml的方法。通过示例代码解析了每种格式的配置文件,并对比了它们的特性和使用难度。
摘要由CSDN通过智能技术生成

Go中配置文件读取的几种方式

日常开发中读取配置文件包含以下几种格式:

  • json 格式字符串
  • K=V 键值对
  • xml 文件
  • yml 格式文件
  • toml 格式文件

前面两种书写简单,解析过程也比较简单。xml形式书写比较累赘,yml是树形结构,为简化配置而生,toml是一种有着自己语法规则的配置文件格式,我们一一来看使用方式,各位看官自行比较哪种更加实用。

1.读取json格式的文件
package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
	"sync"
)

type Configs map[string]json.RawMessage
var configPath string = "c:/test.json"


type MainConfig struct {
   
	Port string `json:"port"`
	Address string `json:"address"`
}


var conf *MainConfig
var confs Configs

var instanceOnce sync.Once

//从配置文件中载入json字符串
func LoadConfig(path string) (Configs, *MainConfig) {
   
	buf, err := ioutil.ReadFile(path)
	if err != nil {
   
		log.Panicln("load config conf failed: ", err)
	}
	mainConfig := &MainConfig{
   }
	err = json.Unmarshal(buf, mainConfig)
	if err != nil {
   
		log.Panicln("decode config file failed:", string(buf), err)
	}
	allConfigs := make(Configs, 0)
	err = json.Unmarshal(buf, &allConfigs)
	if err != nil {
   
		log.Panicln("decode config file failed:", string(buf), err)
	}

	return allConfigs, mainConfig
}

//初始化 可以运行多次
func SetConfig(path string) {
   
	allConfigs, mainConfig := LoadConfig(path)
	configPath = path
	conf = mainConfig
	confs = allConfigs
}

// 初始化,只能运行一次
func Init(path string) *MainConfig {
   
	if conf != nil && path != configPath {
   
		log.Printf("the config is already initialized, oldPath=%s, path=%s", configPath, path)
	}
	instanceOnce.Do(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值