码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 使用 gopkg.in/yaml.v3 解析 YAML 数据


    合集 - Golang学习(55)
    1.iota简介07-102.go generate命令简介07-113.golang uuid库介绍07-244.gRPC基本教程07-255.protolator简介07-316.Govulncheck v1.0.0 发布了!08-037.每日一库:GORM简介08-078.Go泛型简介08-099.Go 1.21发布!08-1010.Golang zip压缩文件读写操作2020-12-2311.本地搭建playground2021-01-1712.zap自定义日志级别02-0913.Gorm日志设置02-0914.gin启动https支持2022-11-3015.Go Plugin介绍2021-12-1416.Golang漏洞管理07-3017.可以丢掉123456了07-0418.如何优雅地退出程序06-2719.PGO前瞻06-2520.go多版本管理05-1621.openAI发布v0.2.0了05-1122.Gin中间件开发08-1123.Fabric区块链浏览器(1)08-1524.每日一库:Memcache08-1725.protojson简介08-1826.每日一库:gosec08-2127.Fabric区块链浏览器(2)08-2228.每日一库:fsnotify简介08-2629.gRPC with JWT08-2730.embed简介08-2931.Fabric区块链浏览器(3)08-3032.每日一库:pprof简介09-0133.go 1.21:cmp09-0234.完全可复制、经过验证的 Go 工具链09-0535.PGO in Go 1.2109-0936.Fabric 2.x 智能合约开发记录09-1037.为不断增长的Go生态系统扩展gopls09-1138.每日一库:lumberjack -- 日志轮换和管理09-1439.2023-04-26-微信安全模式下消息解析09-1440.WASI support in Go09-1541.每日一库:Prometheus09-1742.如何实现流量控制和熔断降级?09-1843.消息队列 - RabbitMQ09-1944.Go 1.22 中的 For 循环09-2245.设计模式之单例模式09-2346.每日一库:使用Viper处理Go应用程序的配置09-25
    47.使用 gopkg.in/yaml.v3 解析 YAML 数据09-26
    48.在Go中如何实现并发09-2849.解析类型参数10-0450.设计模式之工厂模式10-0651.每日一库:cobra 简介10-0752.slices in Go 1.2110-0853.go defer简介10-1354.slice简介10-2055.Golang Map底层实现简述10-22
    收起

    YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化格式,常用于配置文件和数据交换。在 Go 语言中,你可以使用 gopkg.in/yaml.v3 包来解析和生成 YAML 数据。本文将介绍如何使用 gopkg.in/yaml.v3 来处理 YAML 数据。

    安装 gopkg.in/yaml.v3

    首先,你需要安装 gopkg.in/yaml.v3 包。使用以下命令来获取:

    go get gopkg.in/yaml.v3

    解析 YAML 数据

    下面是一个简单的示例,演示了如何使用 gopkg.in/yaml.v3 解析 YAML 数据。

    创建 YAML 数据

    首先,创建一个包含 YAML 数据的文件,例如 config.yaml:

    server:
    port: 8080
    host: localhost
    database:
    host: db.example.com
    port: 5432
    username: user
    password: secret

    使用 gopkg.in/yaml.v3 解析 YAML

    接下来,在你的 Go 代码中使用 gopkg.in/yaml.v3 包来解析 YAML 数据:

    package main
    import (
    "fmt"
    "gopkg.in/yaml.v3"
    "os"
    )
    type Config struct {
    Server ServerConfig `yaml:"server"`
    Database DatabaseConfig `yaml:"database"`
    }
    type ServerConfig struct {
    Port int `yaml:"port"`
    Host string `yaml:"host"`
    }
    type DatabaseConfig struct {
    Host string `yaml:"host"`
    Port int `yaml:"port"`
    Username string `yaml:"username"`
    Password string `yaml:"password"`
    }
    func main() {
    // 打开 YAML 文件
    file, err := os.Open("config.yaml")
    if err != nil {
    fmt.Println("Error opening file:", err)
    return
    }
    defer file.Close()
    // 创建解析器
    decoder := yaml.NewDecoder(file)
    // 配置对象
    var config Config
    // 解析 YAML 数据
    err = decoder.Decode(&config)
    if err != nil {
    fmt.Println("Error decoding YAML:", err)
    return
    }
    // 输出配置项
    fmt.Printf("Server Port: %d\n", config.Server.Port)
    fmt.Printf("Server Host: %s\n", config.Server.Host)
    fmt.Printf("Database Host: %s\n", config.Database.Host)
    fmt.Printf("Database Port: %d\n", config.Database.Port)
    fmt.Printf("Database Username: %s\n", config.Database.Username)
    fmt.Printf("Database Password: %s\n", config.Database.Password)
    }

    在上述代码中,我们首先打开 YAML 文件,然后创建一个 yaml.Decoder 对象来解码 YAML 数据。然后,我们定义了一个配置结构体,该结构体对应于 YAML 数据的结构。最后,我们使用 decoder.Decode() 函数来解析 YAML 数据,并输出配置项的值。

    运行程序

    运行上述程序,你将看到它输出配置文件中的值:

    Server Port: 8080
    Server Host: localhost
    Database Host: db.example.com
    Database Port: 5432
    Database Username: user
    Database Password: secret

    生成 YAML 数据

    除了解析 YAML 数据,gopkg.in/yaml.v3 也支持生成 YAML 数据。下面是一个示例,演示如何创建并保存 YAML 数据。

    package main
    import (
    "fmt"
    "gopkg.in/yaml.v3"
    "os"
    )
    type Config struct {
    Server ServerConfig `yaml:"server"`
    Database DatabaseConfig `yaml:"database"`
    }
    type ServerConfig struct {
    Port int `yaml:"port"`
    Host string `yaml:"host"`
    }
    type DatabaseConfig struct {
    Host string `yaml:"host"`
    Port int `yaml:"port"`
    Username string `yaml:"username"`
    Password string `yaml:"password"`
    }
    func main() {
    config := Config{
    Server: ServerConfig{
    Port: 8080,
    Host: "localhost",
    },
    Database: DatabaseConfig{
    Host: "db.example.com",
    Port: 5432,
    Username: "user",
    Password: "secret",
    },
    }
    // 创建文件
    file, err := os.Create("output.yaml")
    if err != nil {
    fmt.Println("Error creating file:", err)
    return
    }
    defer file.Close()
    // 创建编码器
    encoder := yaml.NewEncoder(file)
    // 将配置编码为 YAML 数据
    err = encoder.Encode(&config)
    if err != nil {
    fmt.Println("Error encoding YAML:", err)
    return
    }
    fmt.Println("YAML data saved to output.yaml")
    }

    在上述代码中,我们首先创建一个配置对象,然后创建文件 output.yaml。接下来,我们使用 yaml.NewEncoder() 函数创建一个编码器,并使用 encoder.Encode() 函数将配置对象编码为 YAML 数据。最后,我们将生成的 YAML 数据保存到文件中。

    最后

    gopkg.in/yaml.v3 是一个功能强大的 Go 库,用于解析和生成 YAML 数据。它支持复杂的 YAML 结构,可以轻松地读取和写入配置文件。通过使用这个库,你可以方便地在你的 Go 项目中处理 YAML 格式的数据,无论是从文件中读取配置还是将配置写入文件,都变得非常简单。


    孟斯特

    声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
    Author: mengbin
    blog: mengbin
    Github: mengbin92
    cnblogs: 恋水无意


  • 相关阅读:
    Spring的Factories机制介绍
    Pr:首选项 - 媒体缓存
    Reptile_urllib的基本使用
    Unity - Alpha Is Transparency
    开发实战经验分享:互联网医院系统源码与在线问诊APP搭建
    CURL踩坑记录
    Linux-shell编程入门基础
    NPOI组件下载、引用、基本使用
    【Node.JS 练习】考试成绩整理
    日常随笔——linux 更换cmake 版本
  • 原文地址:https://www.cnblogs.com/lianshuiwuyi/p/17729428.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号