您的位置:首页 > 编程语言 > Go语言

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

2017-02-14 15:40 597 查看
最近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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息