当前位置: 首页 > article >正文

Go 语言解析 yaml 文件的方法

Go 语言没有内置解析 yaml 文件的功能,实现 yaml 的解析可以使用第三方库 gopkg.in/yaml.v2gopkg.in/yaml.v3

下面以解析 config.yml 文件为例,演示解析代码的过程。

使用 go get gopkg.in/yaml.v3 添加引用。

在 config 目录下,新增文件 config.yml 文件,内容如下:

mongodb:  
  uri: "mongodb://localhost:27017"       # MongoDB连接串  
  database: "testdb"             # 数据库名称  
  posts_collection: "testcoll"              # 存储 Post 的集合

这里定义了一个 mongodb 的配置,包含了连接、数据库名称和存储集合名。

接着,对照上面的配置,定义 Config 结构

type Config struct {  
    MongoDB struct {  
       Database       string `json:"database"`  
       PostCollection string `json:"post_collection"`  
       URI            string `json:"uri"`  
    } `yaml:"mongodb"`  
}

最后,创建 loadConfig 方法,读取文件并解析

func loadConfig() Config {  
    var conf Config  
    dir, err := os.Getwd()  
    if err != nil {  
       log.Fatalf("fail to get current directory: %v", err)  
    }  
    filename := path.Join(dir, "/config/config.yaml")  
    data, err := os.ReadFile(filename)  
    if err != nil {  
       log.Fatalf("failed to read config.yaml: %v", err)  
    }  
    if err = yaml.Unmarshal(data, &conf); err != nil {  
       log.Fatalf("failed to parse config.yaml: %v", err)  
    }  
    return conf  
}

os.Getwd() 获取当前工作目录,然后使用 path.Join 拼接完整的文件名。

以上,就是 go 解析 yaml 文件的方法。


http://www.kler.cn/a/373948.html

相关文章:

  • WebSocket与Socket
  • 探索 JavaScript 事件机制(五):Vue 事件系统
  • 萤石私有化设备视频平台EasyCVR视频融合平台如何构建农业综合监控监管系统?
  • 爬虫+数据保存2
  • 快速入门HTML
  • TLKS-PMG-100BM这款输电线路智能多目视频监控装置,它具体有哪些亮点和优势?
  • 【idea】idea更新遇到的坑
  • 多用户商城系统的架构与实现
  • react-路由
  • YOLOv6-4.0部分代码阅读笔记-config.py
  • 【C++】深究类型转换
  • LVGL添加事件和删除事件
  • 一年期免费HTTPS证书:网络安全新选择
  • Docker环境安装MySQL
  • ubuntu交叉编译libffi库给arm平台使用
  • Jenkins Pipeline 部署总结
  • 爬虫笔记22——当当网图书详情页静、动态数据爬取
  • leetcode day7 442
  • 6. 线程池实现
  • 如何安装和使用PowerDesigner
  • TDengine 数据订阅 vs. InfluxDB 数据订阅:谁更胜一筹?
  • ETLCloud遇上MongoDB:灵活数据流,轻松管理
  • 四、k8s快速入门之Kubernetes资源清单
  • 忘记无线网络密码的几种解决办法
  • 【GO学习笔记 go基础】编译器下载安装+Go设置代理加速+项目调试+基础语法+go.mod项目配置+接口(interface)
  • vue中el-table显示文本过长提示