go语言yaml配置 go语言 ui

34.Go YAMLYAML是一种流行go语言yaml配置的格式,用于以人类友好的格式序列化数据, 类似JSON但更易于阅读 。
由于其表达能力和可读性,YAML作为配置文件的格式很受欢迎 。
它也用于更复杂的场景中,例如推动Ansible服务器自动化 。
标准库中没有用于处理YAML格式的软件包,但是社区库包括gopkg.in/yaml.v2
将YAML文件读取到Go结构中:
YAML:
YAML解码与JSON解码非常相似 。
如果go语言yaml配置你知道YAML文件的结构,则可以定义映射该结构的结构 , 并将指向顶级结构的结构的指针传递给yaml.Decoder.Decode()函数(或从[]进行解码的yaml.Unmarshal()) 。字节片) 。
YAML解码器在结构字段名称和YAML文件中的名称之间进行智能映射 , 以便 YAML中的名称值被解码为结构中的字段名称 。
最好使用yaml struct标签创建显式映射 。go语言yaml配置我仅在示例中省略go语言yaml配置了它们,以说明未指定它们时的行为 。
将struct写入YAML文件:
yaml.Marshal将interface {}作为参数 。可以传递任何Go值,并将其类型包装到interface {}中 。
Marshaller将使用反射检查传递的值并将其编码为YAML字符串 。
在序列化结构时,仅对导出的字段(其名称以大写字母开头)进行序列化/反序列化 。
在我们的示例中,未对fullName进行序列化 。
结构被序列化为YAML字典 。默认情况下 , 字典键与结构字段名称相同 。
结构字段名称在字典键名称下序列化 。
我们可以提供带有struct标签的自定义映射 。
我们可以将任意的struct标签字符串附加到struct字段 。
yaml:“ age”指示YAML编码器/解码器将名称age用于表示字段Age的字典关键字 。
序列化结构时 , 将值和指针传递给它会产生相同的结果 。
传递指针效率更高,因为按值传递会创建不必要的副本 。
多个Yaml配置文件当一个项目中有多个yml配置文件go语言yaml配置的时候go语言yaml配置,可以以application-**.yml命名go语言yaml配置;在application.yml中配置项目使用激活这些配置文件即可 。多个文件名只需要写application-之后go语言yaml配置的名称,在多个文件之间使用,隔开 。在两个配置文件中如果存在同名的配置项的话会以properties文件的为主 。
激活配置文件application-a.yml与application-b.yml
Golang项目中引入yaml.v2配置文件 在Go语言项目中,常用的配置文件yaml、toml、json、xml、ini几种,因为本章主要讲解yaml配置文件的使用方法,其他几种配置文件在这里就不展开了介绍了,大家有兴趣可以自行百度 。
yaml文件的语法网上有很多的教程,大家自行百度 , 这里也推荐两个链接:
yaml文件解析使用的是github上第三方开源框架 gopkg.in/yaml.v2 ,下面详细介绍安装和使用的方法:
参考链接:
C语言操作yaml配置文件通用操作工具在go语言中使用viper之类的库很方便的处理yaml配置文件 , 但是在c语言中就比较麻烦,经过一番思索和借助强大的github,发现了一个libyaml c库,但是网上的例子都比较麻烦 , 而且比较繁琐,就想法作了一个相对比较容易配置的解析应用,可以简单地类似viper 的模式进行配置实现不同的配置文件读取 。如你的配置文件很复杂请按格式修改KeyValue 全局变量,欢迎大家一起完善
库请自行下载 GitHub - yaml/libyaml: Canonical source repository for LibYAML
直接上代码
yaml示例文件
%YAML 1.1
---
mqtt:
subtopic: "Control/#"
pubtopic: "bbt"
qos: 1
serveraddress: "tcp://192.168.0.25:1883"

推荐阅读