go语言toyaml函数 go语言函数和方法

Golang项目中引入yaml.v2配置文件 在Go语言项目中go语言toyaml函数 , 常用go语言toyaml函数的配置文件yaml、toml、json、xml、ini几种go语言toyaml函数 , 因为本章主要讲解yaml配置文件的使用方法 , 其他几种配置文件在这里就不展开了介绍了,大家有兴趣可以自行百度 。
yaml文件的语法网上有很多的教程,大家自行百度,这里也推荐两个链接:
yaml文件解析使用的是github上第三方开源框架 gopkg.in/yaml.v2 ,下面详细介绍安装和使用的方法:
参考链接:
golang json:怎么替代yaml:安装EasyDataTransform在Mac上就可以解决 。
安装EasyDataTransform在Mac上 , 开始轻松的数据转换 , 将要显示重复项的Excel电子表格拖到EasyDataTransform上 。将添加一个粉红色的输入项请注意右侧窗格中的JSON数据已自动“展平”到表格中 。
您可以将右窗格中的Format下拉菜单设置为Long或Wide,具体取决于您希望表格具有更多行还是更多列,确保选择了粉红色的输入项,单击左窗格中的ToFile按钮,将出现一个窗口 。设置新文件名和位置 。选择YAML文件作为文件类型 。添加并选择了一个绿色输出项 。YAML文件会立即创建 , 无需“运行”任何内容您可以在右侧窗格中更改YAML文件编码 。
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"
clientid: "kvm_test"
writelog: false
writetodisk: false
outputfile: "./receivedMessages.txt"
hearttime: 30
#ifndef __CONFIG_H__
#define __CONFIG_H__
#ifdef __cplusplus
extern "C" {
#endif
/************************/
/* Minimum YAML version */
/************************/
#define YAML_VERSION_MAJOR 1
#define YAML_VERSION_MINOR 1
#define STRUCT_TYPE_NAME 100
#define INT_TYPE_NAME 101
#define STRING_TYPE_NAME 102
#define BOOL_TYPE_NAME 103
#define FLOAT_TYPE_NAME 104
#define MAP_TYPE_NAME 105
#define LIST_TYPE_NAME 106
typedef struct{
char *key;
void *value;
int valuetype;
char *parent;
}KeyValue,*pKeyValue;
#ifdef __cplusplus
}
#endif
#endif
#include
#include
#include
#include
#include
#include
#include
#include "config.h"
typedef struct {
char *SUBTOPIC; //string `yaml:"subtopic" mapstructure:"subtopic"` //"topic1"
char *PUBTOPIC; //string `yaml:"pubtopic" mapstructure:"pubtopic"`
int QOS; //byte `yaml:"qos" mapstructure:"qos"` //1
char *SERVERADDRESS; //string `yaml:"serveraddress" mapstructure:"serveraddress"` //= "tcp://mosquitto:1883"
char *CLIENTID; //string `yaml:"clientid" mapstructure:"clientid"` //= "mqtt_subscriber"
int HEARTTIME; //int `yaml:"hearttime" mapstructure:"hearttime"`
// CommandLocalPath string `yam:"commanlocalpath"`
}mqttSection,*pmqttSection;
typedef struct {
mqttSection Mqtt;// `yaml:"mqtt" mapstructure:"mqtt"`
// KVM kvmSection `yaml:"kvm" mapstructure:"kvm"`

推荐阅读