golang 读取yml格式,多结构体级联

前端之家收集整理的这篇文章主要介绍了golang 读取yml格式,多结构体级联前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1.安装yml解析包

进入到gopath下执行命令

  1. go get gopkg.in/yaml.v2

源码地址https://github.com/go-yaml/yaml

2.设置配置文件config.yml

  1. ipport: 192.168.2.95:10000
  2. startsendtime: 2017-01-02 08:08:08
  3. sendmaxcountperday: 100
  4. devices:
  5. - devid: 123456789 nodes:
  6. - pkid: 0 bkid: 0
  7. index: 0
  8. minvalue: 0
  9. maxvalue: 60
  10. datatype: normal
  11. - pkid: 0 bkid: 0
  12. index: 0
  13. datatype: boolean
  14. - devid: 10001 nodes:
  15. - pkid: 0 bkid: 1
  16. index: 0
  17. datatype: boolean
  18. warnfrequency: 10
  19. sendfrequency: 10

3.编写测试类

  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "gopkg.in/yaml.v2"
  6. "io/IoUtil"
  7. )
  8.  
  9. //配置文件中字母要小写,结构体属性首字母要大写
  10.  
  11. type Myconf struct {
  12. Ipport string
  13. StartSendTime string
  14. SendMaxCountPerDay int
  15. Devices []Device
  16. WarnFrequency int
  17. SendFrequency int
  18. }
  19. type Device struct {
  20. DevId string
  21. Nodes []Node
  22. }
  23. type Node struct {
  24. PkId string
  25. BkId string
  26. Index string
  27. MinValue float32
  28. MaxValue float32
  29. DataType string
  30. }
  31.  
  32. func main() {
  33. data,_ := IoUtil.ReadFile("config.yml")
  34. fmt.Println(string(data))
  35. t := Myconf{}
  36. //把yaml形式的字符串解析成struct类型
  37. yaml.Unmarshal(data,&t)
  38. fmt.Println("初始数据",t)
  39. if(t.Ipport==""){
  40. fmt.Println("配置文件设置错误")
  41. return;
  42. }
  43. d,_ := yaml.Marshal(&t)
  44. fmt.Println("看看 :",string(d))
  45. }

4.注意

1.配置文件中字母要小写,结构体属性首字母要大写,开发比较快
也可以指定如:yaml:"c",只不过有点麻烦,当然如果重命名必须要指定
2.yaml:",flow"
这个意思是将数组用[“a”,”b”]这样的格式展示,默认展示形式是

  1. - a - b

猜你在找的Go相关文章