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