广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Golang解析yaml文件操作指南
  • 634
分享到

Golang解析yaml文件操作指南

2024-04-02 19:04:59 634人浏览 薄情痞子
摘要

目录前言Simple DemoGo-yaml 其他解析方法总结前言 yaml 文件是研发人员最常用的配置文件,yaml 文件的树形结构一直很受大家的欢迎。有过 SpringBoot

前言

yaml 文件是研发人员最常用的配置文件,yaml 文件的树形结构一直很受大家的欢迎。有过 SpringBoot 开发经验的同学对 yaml 非常熟悉,springBoot 整个项目的运行就需要一个 application.yaml 文件的支持,那么 golang 项目中的 yaml 文件是如何解析的呢?Let`s dive in!

PS:根据 godocs 的说法,Golang 有三个强大的工具包支持 yaml 文件的解析,分别是:go-gypsy go-yaml goccy-yaml。本文中我们将讨论其中 go-yaml 的用法。

对 yaml 解析源码感兴趣的同学请进入:go-yaml源码链接

Simple Demo

第一步,我们创建好项目后导入 go-yaml 依赖:

➜  go-yaml go get gopkg.in/yaml.v3
go: added gopkg.in/yaml.v3 v3.0.1

第二步,创建 main 文件并在内部编写一个简单的结构体:

type ConfDemo struct {
  // 后面的 yaml 注解是在 yaml 文件中的属性名
	A int      `yaml:"a"`
	B string   `yaml:"b"`
	C bool     `yaml:"c"`
	D []string `yaml:"d"`
	E struct {
		EA string `yaml:"ea"`
		EB string `yaml:"eb"`
	} `yaml:"e"`
}

第三步,在主目录下创建 conf 目录,并在 conf 目录下创建 conf_demo.yaml 文件去编写我们的配置:

a: 1
b: "I am B"
c: true
d:
  - "I"
  - "am"
  - "D"
e:
  ea: "I am EA"
  eb: "I am EB"

第四步,编写 main 函数:

func main() {
  // 读取文件所有内容装到 []byte 中
	bytes, err := ioutil.ReadFile("config/conf_demo.yaml")
	if err != nil {
		log.Fatalln(err)
	}
  // 创建配置文件的结构体
	var confDemo ConfDemo
  // 调用 Unmarshall 去解码文件内容
  // 注意要穿配置结构体的指针进去
	err = yaml.Unmarshal(bytes, &confDemo)
	if err != nil {
		log.Fatalln(err)
	}
  // 调用 Unmarshall 对解码出来的 confDemo 进行编码
  // 返回的 yml 是 []byte 类型的
  yml, err := yaml.Marshal(confDemo)
	if err != nil {
		log.Fatalln(err)
	}
  // 输出结果
	fmt.Printf("%#v\n", confDemo)
  fmt.Printf("%s\n", yml)
}

第五步,运行并查看结果:

➜  go-yaml go run main.go
main.ConfDemo{A:1, B:"I am B", C:true, D:[]string{"I", "am", "D"}, E:struct { EA string "yaml:\"ea\""; EB string "yaml:\"eb\"" }{EA:"I am EA", EB:"I am EB"}}
a: 1
b: I am B
c: true
d:
    - I
    - am
    - D
e:
    ea: I am EA
    eb: I am EB

go-yaml 其他解析方法

第一种解析方法即 simple Demo 中展现的 MarshallUnmarshall 方法,他们会直接在结构体和字节流上进行操作。但有时我们为了图方便想把读取字节流这一步也交给组件去执行,这时候我们可以利用 yaml.Encoderyaml.Decoder

yaml.Encoderyaml.Decoderio.Writerio.Reader 上进行操作读取其字节流并执行编码和解码的动作。我们将上面的例子以这种方法再次实现一遍:

func main() {
  // 利用 os.Open 获取 File 对象,该对象实现了 io.Reader 和 io.Writer
	file, err := os.Open("config/conf_demo.yaml")
	if err != nil {
		log.Fatalln(err)
	}
  // 构造新的 Decoder,并传入 file
	decoder := yaml.NewDecoder(file)
  // 配置文件结构体
	var confDemo ConfDemo
  // 解码操作,注意要传入地址
	err = decoder.Decode(&confDemo)
  // 输出解码结果
	fmt.Printf("%#v\n", confDemo)
	if err != nil {
		log.Fatalln(err)
	}
  // 构造新的 Encoder,这里直接传入了 os.Stdout,代表结果直接输出到控制台
	encoder := yaml.NewEncoder(os.Stdout)
  // 编码并输出
	err = encoder.Encode(confDemo)
	if err != nil {
		log.Fatalln(err)
	}
}

运行结果:

➜  go-yaml go run main.go
main.ConfDemo{A:1, B:"I am B", C:true, D:[]string{"I", "am", "D"}, E:struct { EA string "yaml:\"ea\""; EB string "yaml:\"eb\"" }{EA:"I am EA", EB:"I am EB"}}
a: 1
b: I am B
c: true
d:
    - I
    - am
    - D
e:
    ea: I am EA
    eb: I am EB

总结

到此这篇关于Golang解析yaml文件操作的文章就介绍到这了,更多相关Golang解析yaml文件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: Golang解析yaml文件操作指南

本文链接: https://www.lsjlt.com/news/121147.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Golang解析yaml文件操作指南
    目录前言Simple Demogo-yaml 其他解析方法总结前言 yaml 文件是研发人员最常用的配置文件,yaml 文件的树形结构一直很受大家的欢迎。有过 SpringBoot ...
    99+
    2022-11-11
  • SpringBoot解析怎么指定Yaml配置文件
    这篇“SpringBoot解析怎么指定Yaml配置文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot解析...
    99+
    2023-07-05
  • SpringBoot读取yaml文件操作详解
    目录1. 单个属性2. 全部属性3. 对象属性补充1. 单个属性 yaml 内的属性如下: server: port: 80 只需在成员变量上注解 @Value(“...
    99+
    2022-11-13
  • PHP入门指南:文件操作
    作为一名初学者,PHP 文件操作可能是你需要掌握的基础操作之一。文件操作能使你进行多种操作,包括读取和写入文件,创建和删除文件,以及更重要的是,处理上传文件。在本篇文章中,我们将探讨PHP文件操作的基础知识。检查文件是否存在在进行文件操作之...
    99+
    2023-05-20
    PHP 文件操作 入门指南
  • PHP中的文件操作指南
    PHP是一种服务器端编程语言,开发人员可以使用它来开发各种类型的Web应用程序。在开发Web应用程序时,文件操作可能是一个经常需要用到的功能。在本篇文章中,我们将深入介绍PHP中的文件操作指南。一、创建文件在PHP中创建一个文件很简单,只需...
    99+
    2023-05-22
    PHP 文件操作 文件读取 文件写入
  • SpringBoot解析指定Yaml配置文件的实现过程
    目录前言1、自定义配置文件2、配置对象类3、YamlPropertiesSourceFactory 下面还有投票,帮忙投个票 前言 最近在看某个开源项目代码并准备参与其中,代码过了一...
    99+
    2023-03-22
    SpringBoot解析Yaml配置文件 SpringBoot Yaml配置文件
  • Python基本文件操作实用指南
    目录一、前言二、创建和打开文件1.打开一个不存在的文件时先创建该文件2.以二进制形式打开文件3.打开文件时指定编码方式三、关闭文件四、打开文件时使用with语句五、写入文件内容六、读...
    99+
    2022-11-11
  • Python操作XML文件的使用指南
    目录什么是 XMLPython XML 解析模块xml.etree.ElementTree 模块使用 parse() 函数使用 fromstring() 函数寻找感兴趣的元素修改 X...
    99+
    2022-11-11
  • Python文件基本操作实用指南
    文件的存储方式 在计算机中,文件是以 二进制的方式保存在磁盘上的 文本文件和二进制文件 文本文件 可以使用文本编辑软件查看...
    99+
    2022-11-12
  • Golang 文件操作:删除指定的文件方式
    我就废话不多说了,大家还是直接看代码吧~ package main import "os" func main () { err := os.Remove(logF...
    99+
    2022-11-12
  • MySQL导出sql脚本文件操作指南
    目录前言MySQL导出sql脚本文件一.打开MySQL数据库安装目录下的bin文件夹二.在文件夹内打开命令行三.在命令框内输入指令导出sql脚本最后的话前言 sql脚本文件在我们做项...
    99+
    2023-01-13
    mysql导出sql脚本 sqlserver导出数据脚本 mysql如何导出sql文件
  • 云服务器手机上的文件操作指南
    1. 下载云服务器文件管理应用 要在手机上操作云服务器上的文件,首先需要下载并安装一个适用于你的云服务器的文件管理应用。常见的云服务器文件管理应用有ES文件浏览器、Solid Explorer、File Commander等。你可以在应用...
    99+
    2023-10-27
    机上 操作指南 服务器
  • Python打包成exe文件的详细操作指南
    目录前言一、安装pyinstaller1.1 安装pyinstaller,使用安装命令:1.2 如果遇到需要更新版本请输入:1.3 检查是否正确安装1.4 稍等,水一下;二、pyth...
    99+
    2022-11-11
  • golang如何操作csv文件详解
    目录练习要求:考察点:编码:README.md附:使用Golang导出CSV数据并解决数据乱码问题CSV 格式实现方式golang实现csv数据写文件golang实现web导出csv...
    99+
    2022-11-13
  • Python中CSV文件(逗号分割)实战操作指南
    目录一、csv文件介绍1、csv文件简介2、为什么要使用csv文件二、csv文件查看1、测试文件创建2、查看csv文件(列表)3、查看csv文件(字典)4、写入文件(列表)5、写入文...
    99+
    2022-11-11
  • Go读取文件与写入文件的三种方法操作指南
    目录文件写入操作Write和WriteString写入操作使用buffio内置包来读文件第三种写入文件方法:ioutil.WriteFile总结打开和关闭文件操作: os.Open(...
    99+
    2022-11-11
  • pandas学习之txt与sql文件的基本操作指南
    目录前言1.导入txt文件2.导入sql文件2.1 安装依赖库pymysql3.小结总结前言 Pandas是python的一个数据分析包,是基于NumPy的一种工具提供了大量数据结构...
    99+
    2022-11-12
  • 阿里云服务器取证全面解析和操作指南
    阿里云服务器取证是一种用于检查服务器上的数据和日志的方法。本文将详细解析阿里云服务器取证的步骤和方法,并提供操作指南,帮助您更好地理解和操作阿里云服务器取证。 阿里云服务器取证是指通过阿里云提供的服务器取证工具,对服务器上的数据和日志进行详...
    99+
    2023-12-17
    阿里 操作指南 服务器
  • ASP文件在Linux操作系统上的部署和配置指南。
    ASP文件在Linux操作系统上的部署和配置指南 ASP(Active Server Pages)是一种用于创建动态Web应用程序的服务器端脚本技术。在Windows操作系统上,ASP文件的部署和配置是相对简单的。但是,在Linux操作系统...
    99+
    2023-11-09
    linux apache 文件
  • PHP邮件发送函数详细解析:mail、smtp、PHPMailer等函数的邮件发送操作指南
    PHP邮件发送函数详细解析:mail、smtp、PHPMailer等函数的邮件发送操作指南,需要具体代码示例一、引言在现代社会中,电子邮件已经成为人们沟通、交流信息的重要工具之一。在Web开发中,我们经常会遇到发送邮件的需求,无论是用户注册...
    99+
    2023-11-18
    PHP邮件发送 SMTP协议 mail函数
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作