首页 > 其他分享 >如何在 Go 中解析 yaml 文件

如何在 Go 中解析 yaml 文件

时间:2024-10-31 17:00:04浏览次数:4  
标签:文件 err Config yaml Go 解析 config

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 文件的方法。

标签:文件,err,Config,yaml,Go,解析,config
From: https://www.cnblogs.com/denglei1024/p/18517957

相关文章

  • SSM 框架重要知识点解析
    在JavaWeb开发领域,SSM框架(Spring+SpringMVC+MyBatis)是一套备受青睐的轻量级企业级开发框架组合,它为我们提供了高效、便捷且可维护的开发方式。接下来,让我们深入探讨一下SSM框架中的重要知识点。一、Spring框架核心要点1.IOC(控制反转)与DI(依赖注入)概念解析I......
  • Kyber原理解析
    Kyber是一种IND-CCA2安全的密钥封装机制。Kyber的安全性基于在模格(MLWE问题)中解决LWE问题的难度。Kyber的构造采⽤两阶段⽅法:⾸先介绍⼀种⽤来加密固定32字节⻓度的消息原⽂的IND-CPA安全性的公钥加密⽅案,我们称之为CPAPKE,CPAPKE由密钥生成(CPAPKE.KeyGen)、加密(CPAPKE.Encry......
  • 计算机毕业设计-django仓库库存管理系统
    网站介绍:✌本网站专注专注于计算机技术领域的毕业设计辅导,提供JAVA、微信小程序、Python、APP、PHP、微服务、NET等毕设项目的定制和成品服务!✌一、项目介绍《django仓库库存管理系统》该项目含有源码、文档等资料、配套开发软件、软件安装教程、项目发布教程等。软件开发......
  • 【Linux】巧妙运用<信号量>解决<水果放取问题>(思维导图&代码演示&思路解析)
    前言大家好吖,欢迎来到YY滴Linux系列,热烈欢迎!本章主要内容面向接触过C++的老铁主要内容含:欢迎订阅YY滴C++专栏!更多干货持续更新!以下是传送门!YY的《C++》专栏YY的《C++11》专栏YY的《Linux》专栏YY的《数据结构》专栏YY的《C语言基础》专栏YY的《初学者易错点》......
  • MongoDB关联另一个集合
    MongoDB本身并不支持传统关系数据库中的外键(foreignkey)概念,因为它是一个文档数据库,数据通常是以JSON格式存储的文档,并且不强制要求文档之间的关系。然而,你可以通过以下几种方式在MongoDB中实现类似外键的功能:1.引用(References)你可以在一个文档中存储另一个文档的ID,从而......
  • MongoDB的ORM 库
    MongoDB的ORM(对象关系映射)库主要有几个常用的选择,以下是一些比较流行的库及其特点:MongoEngine:(360)基于文档的ORM,允许使用Python类来定义MongoDB文档结构。提供了查询构建器,支持丰富的查询语法。适合于快速构建小型到中型应用。示例:frommongoengineimportDocument,......
  • DJango
    DJango当今的网站上实际上都是富应用程序,就像成熟的桌面应用程序一样。python提供了一组开发web应用程序的卓越工具。Django是一个web框架--一套用于帮助开发交互式网站的工具,Django能够响应页面请求,还能让你更轻松地写数据库、管理用户等。2.MVC与MTV模型2.1MVC介绍we......
  • DJango-入门
    1.Django系列之web应用于HTTP协议1.2最简单的web应用程序web应用程序指供浏览器访问的程序,通常也简称为web应用。应用程序有两种模式C/S、B/S。C/S是客户端/服务端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务端应用程序,这类应用程序一般借助浏览器来运行。we......
  • Django-Ajax请求
    1.Django-Ajax请求1.2介绍客户端(浏览器)向服务端发起请求的形式:1.地址栏:GET2.超链接标签:GET3.form表单:GET或POST4.Ajax(重要):GET或POST或PUT或DELETEAjax(AsynchronousJavascriptAndXML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交......
  • 【解决MongoDB安装难题!】计算机丢失VCRUNTIME140D.dll?一招教你快速修复!
    在安装或运行Java的MongoDB相关程序时,如果遇到“无法启动此程序,因为计算机丢失VCRUNTIME140D.dll”的错误,通常是由于缺少MicrosoftVisualC++Redistributable包。VCRUNTIME140D.dll是VisualC++2015-2019Redistributable的一部分,用于支持C++应用程序的运行时库。以下是解......