进入到gopath下执行命令
go get gopkg.in/yaml.v2
源码地址https://github.com/go-yaml/yaml
2.设置配置文件config.ymlipport: 192.168.2.95:10000startsendtime: 2017-01-02 08:08:08sendmaxcountperday: 100devices:- @H_301_17@devID: 123456789 nodes: - @H_301_17@pkID: 0 bkID: 0 index: 0 minvalue: 0 maxvalue: 60 datatype: normal - @H_301_17@pkID: 0 bkID: 0 index: 0 datatype: boolean- @H_301_17@devID: 10001 nodes: - @H_301_17@pkID: 0 bkID: 1 index: 0 datatype: booleanwarnfrequency: 10sendfrequency: 103.编写测试类
package mainimport ( "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总结
以上是内存溢出为你收集整理的golang 读取yml格式,多结构体级联全部内容,希望文章能够帮你解决golang 读取yml格式,多结构体级联所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)