关闭

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

标签: golang结构多结构体级联yml格式解析
664人阅读 评论(0) 收藏 举报
分类:

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
0
0
查看评论

Go实战--go语言中使用YAML配置文件(与json、xml、ini对比)

生命不止,继续 go go go !!!golang中如何使用json在前面介绍过了: 《Go语言学习之encoding/json包(The way to go)》golang中如何使用xml在前面也有介绍过: 《Go语言学习之encoding/xml(The way to go)》json使用...
  • wangshubo1989
  • wangshubo1989
  • 2017-06-27 12:55
  • 9197

golang学习笔记之yaml文件处理

golang可以通过Unmarshal和Marshal函数处理json数据,当前如果你是yaml文件也可以解析,毕竟yaml和json只是不同的数据格式。先看例子: package mainimport ( "fmt" "log" &q...
  • u010278923
  • u010278923
  • 2017-04-10 19:36
  • 2106

关于yml格式类型文件及YAML的一些资源

在drupal中用了大量yml扩展名的配置文件,这是因为symfony采用了这样的配置文件,yml文件扩展名是YAML的缩写,YAML于2001年出现,是一种数据描述语言,类似xml,但非常简洁,在2009年发布了1.2版本,在php中有php-yaml,syck,spyc进行解析 YAML的官网...
  • u011474028
  • u011474028
  • 2016-04-06 10:52
  • 13496

go语言中yaml配置文件的使用

文中操作yaml使用的是github上第三方开源gopkg.in/yaml.v2 具体如何使用? 第一步:下载go get gopkg.in/yaml.v2第二步:新建一个yaml文件,比如conf.yamlhost: localhost:3306 user: root pwd: 123456 ...
  • yuyinghua0302
  • yuyinghua0302
  • 2017-12-13 17:30
  • 112

mac系统下搭建go语言环境

1,首先查看是否安装go,或者安装版本yishiyaonie:GO liuhanlin$ go version go version go1.5.1 darwin/amd64记住版本不能过低,比如1.2,在以后的编译项目过程中可能会带来很多很多麻烦。切记。2,配置go的开发环境 首先要确定你的开发目...
  • guoer9973
  • guoer9973
  • 2016-05-29 15:48
  • 2884

golang语法总结(二十):struct组合

Go的struct可以嵌入组合其它struct,有点像是继承,下面是示例: type human struct { Sex int}type person struct { human //嵌入结构,只需要写出结构类型 Name string Age int}func main() { a...
  • QQ245671051
  • QQ245671051
  • 2016-02-22 18:33
  • 2564

go语言之结构体数组转为string字符串

转换顺序:先将struct结构体转为map,再将map转为string字符串 struct --> map --> string type demo struct { Id string Name string } f...
  • qq_29447481
  • qq_29447481
  • 2017-06-06 09:35
  • 4136

YAML语言

一、简介 YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。 它的基本语法规则如下。 大小写敏感使用缩进表示层级关系缩进时不允许使用Tab键,只允许使用空格。缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 # 表示注释,...
  • u014788227
  • u014788227
  • 2016-10-20 09:30
  • 2477

Go语言解析YAML

gopath从零学 要用go,用官方的安装包安装在Home目录下还需要额外的配置 首先安装完go,在文件夹的bin目录下执行go的命令报错: go: cannot find GOROOT directory: /usr/local/go 需要在~/.bashrc中修改为安装go的地址: v...
  • wylewylie
  • wylewylie
  • 2017-11-27 15:41
  • 256

yaml文件的语法及注意事项

因为工作需要,最近在倒腾symfony,而symfony框架里面配置文件超级多,用的都是yaml文件作为配置文件,由于自己对该文件不是很熟悉,故找了资料了解了下,此为学习笔记。 首先举个例子, 请将如下php数组转换为yaml格式: $bat = array( 'website...
  • u011250882
  • u011250882
  • 2015-09-29 22:41
  • 12719
    个人资料
    • 访问:246840次
    • 积分:4204
    • 等级:
    • 排名:第8643名
    • 原创:149篇
    • 转载:78篇
    • 译文:0篇
    • 评论:43条
    全家桶
    心境
    • n年后的事情会是什么样子
    • 谁知道呢
    • 做好现在吧
    • 每天能进步一点
    • 你就应该满足了
    博客专栏