GO语言: 读取配置文件的方式toml

最近go语言项目中用到读取配置文件,如下:
使用这个"github.com/BurntSushi/toml"
配置文件如下:conf.toml

# id
ID = 1
# name
Name = "name1"
# weight
Weight = 1.7
# books
Books = ["a", "b", "c"]
Sex = true

#friend Friend都可以
[friend]
Age = 32
Name = "xio"

代码如下 readConf.go:

package conf

import (
	"fmt"
	"github.com/BurntSushi/toml"
	"io/ioutil"
	"os"
)

// person
type Person struct {
	ID     uint32
	Sex    bool
	Name   string
	Weight float32
	Friend *Friends
	Books  []string
}

// friends
type Friends struct {
	Age  int
	Name string
}

func ReadConf(fname string) (p *Person, err error) {
	var (
		fp       *os.File
		fcontent []byte
	)
	p = new(Person) // &Person{}
	if fp, err = os.Open(fname); err != nil {
		fmt.Println("open error ", err)
		return
	}

	if fcontent, err = ioutil.ReadAll(fp); err != nil {
		fmt.Println("ReadAll error ", err)
		return
	}

	if err = toml.Unmarshal(fcontent, p); err != nil {
		fmt.Println("toml.Unmarshal error ", err)
		return
	}
	return
}

测试代码如下 readConf_test.go:

package conf

import "testing"

func TestReadConf(t *testing.T) {
	p, err := ReadConf("./conf.toml")
	if err != nil {
		t.Logf("%v", err)
	}

	t.Logf("person %v", p)
	t.Logf("person.friend %v", p.Friend)
}

输出结果为:

[ `go test -v` | done: 2.6748515s ]
  === RUN   TestReadConf
  --- PASS: TestReadConf (0.00s)
    readConf_test.go:11: person &{1 true name1 1.7 0x1218c570 [a b c]}
    readConf_test.go:12: person.friend &{32 xio}
  PASS
  ok    goProgram/conf  0.458s


细节点:

1 结构体的成员首字母大写
2 配置文件的配置项须与结构体成员名一样
3 支持bool, int, float , 字符串,字符串数组...等,也可以包含其他结构体 如[Friend] 

附:学习链接
https://item.congci.com/-/content/toml-ji-jian-de-peizhiwenjian-geshi
https://github.com/toml-lang/toml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值