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.mzph.cn/web/57501.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习基础—循环神经网络(RNN)

引言 从本系列博客开始,我们将来一起学习一下NLP领域的相关基础知识,NLP领域重要的模型是RNN,在此之前,先来了解一些符号的含义。 1.符号定义 (1)符号定义 假设建立一个能够自动识别句中人名位置的序列模型…

Web测试和APP测试的区别

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 最近听到有些朋友说,移动端要比web端稍微难一些,涉及到的细节笔记要多,有转去做web测试的想法,看看在具体测试的时…

Linux TCP CC状态机

万字详文:TCP 拥塞控制详解 - 知乎bcc/tools/tcpcong.py at master iovisor/bccbcc/tools/tcpcong_example.txt at master iovisor/bcc 1.状态机 2.tcp map 拥塞算法历史 1974年,3次握手被提出;1978年,TCP和IP拆分成TCP/IP&…

如何进行商标注册?

商标注册是一个法律程序,用于保护品牌名称、标志或符号,确保其在商业活动中的独特性和识别度。以下是商标注册的基本流程和注意事项: 商标查询:在提交商标注册申请之前,建议进行商标查询,以了解在先权利情…

视频设备一体化监控运维方案

随着平安城市、雪亮工程等项目建设的号召,视频监控系统的建设如火如荼地开展。无论在公共场所、企业单位、住宅小区、矿山工地还是交通枢纽,视频监控系统已成为保障安全、维护秩序和提升管理效率的重要工具。但由于对视频监控系统中的前端设备&#xff0…

深度数据修复软件哪个好?盘点2024年好用的4个数据恢复工具。

深度数据修复软件可以帮助用户深入存储设备,找回丢失的数据。它们可以有效解决很多场景下的数据丢失问题,如果大家平时会有数据丢失的情况,可以用这几个工具去尝试一些自己进行数据恢复。 1、福昕深度恢复软件 直通车:http://www…

leetcode-73-矩阵置零

题解: 1、初始化变量ls_row与ls_col分别用来存储元素0的所在行与列; 2、获取矩阵的行数M与列数N; 3、遍历矩阵matrix的每一个元素。如果这个元素为0,则将该元素所在行数append到ls_row,所在列append到ls_col。 4、…

什么是 Spring Cloud Bus?我们需要它吗?

在微服务架构中,Spring Cloud 提供了一系列强大的工具和组件来帮助我们构建和管理分布式系统。其中,Spring Cloud Bus 就是一个非常有用的组件,但很多人对它可能还不太了解。那么,什么是 Spring Cloud Bus?我们真的需要…

树莓派基本设置--2. raspi-config工具介绍

raspi-config是树莓派操作系统Raspberry Pi OS中预装的配置工具;raspi-config提供了一种简单便捷的命令行界面来管理树莓派系统的配置,使用户可以轻松地定制和优化其系统设置。 如果使用的是树莓派桌面系统,可以直接在桌面左上角的应用菜单&…

# C#中常见警告类型及处理方法全解

在C#开发过程中,常常会遇到各种各样的警告信息。这些警告虽然不一定会导致程序无法运行,但可能暗示着程序存在潜在的问题或不符合最佳实践。本文将结合多种常见情况,详细介绍如何处理C#中的一些典型警告,帮助开发者更好地理解和应…

五、鸿蒙开发-组件状态管理

提示:本文根据b站尚硅谷2024最新鸿蒙开发HarmonyOS4.0鸿蒙NEXT星河版零基础教程课整理 链接指引 > 尚硅谷2024最新鸿蒙开发HarmonyOS4.0鸿蒙NEXT星河版零基础教程 文章目录 一、状态管理入门1.1 State1.2 Prop1.3 Link1.4 Provide和Consume 二、状态管理深入2.1 …

21 Docker容器集群网络架构:四、Docker集群网络验证

文章目录 Docker容器集群网络架构:四、Docker集群网络验证4.1 创建网络4.2 查看创建的网络4.2.1 查看节点1创建的网络4.2.2 查看节点2创建的网络4.2.3 查看节点3创建的网络4.3 运行容器并查看4.3.1 运行容器4.3.2 节点1查看4.3.3 节点2查看4.3.4 节点3查看Docker容器集群网络架…

STM32学习笔记-GPIO

参考江科大32单片机学习相关知识 GPIO基本构造 APB2(Advanced Peripheral Bus 2)是STM32微控制器架构中的一个外设总线,用于连接一些高性能外设,如定时器、USART、ADC和GPIO等。这些外设通常对性能要求较高,需要更快的…

Python import package

python 获取当前目录上一级目录 import sys import os# 获取当前文件所在目录的上一级目录 parent_dir os.path.abspath(os.path.join(os.path.dirname(__file__), ..))# 将上一级目录添加到 sys.path sys.path.append(parent_dir)# 导入上一级目录中的模块或包 import paren…

如何写好prompt以及评测prompt的好坏

引言 在编写Prompt时,目标是明确、具体地指引AI生成符合期望的输出。以下是一些编写和改进Prompt的经验: Prompt书写经验 明确性: 确保你的Prompt清晰、具体。模糊或广泛的描述可能导致不一致的输出。同时尽量避免否定句法。 上下文&#xf…

java陕西民俗网源码(springboot)

项目简介 陕西民俗网实现了以下功能: 中国陕西民俗网的主要使用者分为: 管理员增删改查商品信息和商品信息资料,审核商品信息预订订单,查看订单评价和评分,通过留言功能回复用户提问。 💕💕作…

【python】OpenCV—WaterShed Algorithm

文章目录 1、功能描述2、代码实现3、完整代码4、效果展示5、涉及到的库函数5.1、cv2.pyrMeanShiftFiltering5.2、cv2.morphologyEx5.3、cv2.distanceTransform5.4、cv2.normalize5.5、cv2.watershed 6、更多例子7、参考 1、功能描述 基于分水岭算法对图片进行分割 分水岭分割…

选择最佳SCRM系统的综合指南

内容概要 在如今竞争激烈的市场中,企业不能仅仅依靠传统的客户管理方式,需要借助现代化的SCRM系统来提升效率和服务水平。SCRM系统,就是“社交客户关系管理”系统,旨在通过社交媒体等渠道与客户进行更深层次的互动。在选择合适的…

学习threejs,导入OBJ格式的模型

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.OBJLoader OBJ模型加…

动态规划 —— 路径问题-下降路径最小和

1. 下降路径最小和 题目链接: 931. 下降路径最小和 - 力扣(LeetCode)https://leetcode.cn/problems/minimum-falling-path-sum/description/ 2. 算法原理 状态表示:以莫一个位置位置为结尾 dp[i,j]表示:到…