1.安装yml解析包
进入到gopath下执行命令
- go get gopkg.in/yaml.v2
源码地址https://github.com/go-yaml/yaml
2.设置配置文件config.yml
- ipport: 192.168.2.95:10000
- startsendtime: 2017-01-02 08:08:08
- sendmaxcountperday: 100
- devices:
- - devid: 123456789 nodes:
- - pkid: 0 bkid: 0
- index: 0
- minvalue: 0
- maxvalue: 60
- datatype: normal
- - pkid: 0 bkid: 0
- index: 0
- datatype: boolean
- - devid: 10001 nodes:
- - pkid: 0 bkid: 1
- index: 0
- datatype: boolean
- warnfrequency: 10
- sendfrequency: 10
3.编写测试类
- package main
-
- import (
- "fmt"
- "gopkg.in/yaml.v2"
- "io/IoUtil"
- )
-
- //配置文件中字母要小写,结构体属性首字母要大写
-
- type Myconf struct {
- Ipport string
- StartSendTime string
- SendMaxCountPerDay int
- Devices []Device
- WarnFrequency int
- SendFrequency int
- }
- type Device struct {
- DevId string
- Nodes []Node
- }
- type Node struct {
- PkId string
- BkId string
- Index string
- MinValue float32
- MaxValue float32
- DataType string
- }
-
- func main() {
- data,_ := IoUtil.ReadFile("config.yml")
- fmt.Println(string(data))
- t := Myconf{}
- //把yaml形式的字符串解析成struct类型
- yaml.Unmarshal(data,&t)
- fmt.Println("初始数据",t)
- if(t.Ipport==""){
- fmt.Println("配置文件设置错误")
- return;
- }
- d,_ := yaml.Marshal(&t)
- fmt.Println("看看 :",string(d))
- }
4.注意
1.配置文件中字母要小写,结构体属性首字母要大写,开发比较快
也可以指定如:yaml:"c"
,只不过有点麻烦,当然如果重命名必须要指定
2.yaml:",flow"
这个意思是将数组用[“a”,”b”]这样的格式展示,默认展示形式是
- - a - b