go语言学习之----读取配置文件的方式toml

前端之家收集整理的这篇文章主要介绍了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"@H_403_7@ 


代码如下 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
}
@H_403_7@ 


测试代码如下 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)
}
@H_403_7@ 

输出结果为:

[ `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@H_403_7@ 


细节点:

1 结构体的成员首字母大写

2 配置文件的配置项须与结构体成员名一样

3 支持bool, int, float , 字符串,字符串数组...等,

也可以包含其他结构体 如[Friend]


附:学习链接

https://item.congci.com/-/content/toml-ji-jian-de-peizhiwenjian-geshi

https://github.com/toml-lang/toml

原文链接:https://www.f2er.com/go/188918.html

猜你在找的Go相关文章