首页 > 编程语言 >go编程中yaml的inline应用

go编程中yaml的inline应用

时间:2024-11-25 15:26:46浏览次数:9  
标签:struct err yaml MyConfig go inline Config

下列代码,设计 Config 和 MyConfig 是为可扩展 Config,同时 Config 作为公共部分可保持变化。采用了匿名的内嵌结构体,但又不希望 yaml 结果多出一层。如果 MyConfig 中的 Config 没有使用“yaml:",inline"”修饰,则读取不到配置,Config 中的 Db 将为 nil。

package main

import (
    "fmt"
    "os"
    "gopkg.in/yaml.v2"
)

type DbConfig struct {
    Dsn string `yaml:"dsn"`
}

type Config struct {
    Db *DbConfig `yaml:"db"`
}

type MyConfig struct {
    Config `yaml:",inline"`
}

/*
上述 MyConfig 对应的 yaml 文件:

db:
    dsn: "dsn123"
*/

func main() {
    bytes, err := os.ReadFile("./test.yaml")
    if err != nil {
        panic(err)
    }
    
    config := &MyConfig{}
    err = yaml.Unmarshal(bytes, &config)
    if err != nil {
        panic(err)
    }
    
    fmt.Printf("%+v\n", *config)
}

标签:struct,err,yaml,MyConfig,go,inline,Config
From: https://www.cnblogs.com/aquester/p/18567573

相关文章

  • Go语言基础
    1.Go语言基础Go语言的词法元素包括5种,分别是关键字、标识符、操作符、分隔符和字面量,它们是组成Go语言代码和程序的基本单位。1.1关键字关键字也称保留字,是指在Go语言中有特定含义,成为Go语言语法中的一部分单词。Go语言中的关键字一共有25个,关键字和其功能描述如下:关键字......
  • 使用 Leangoo 看板工具高效管理直播筹备活动
    在组织一场成功的直播活动中,筹备工作通常涉及多个环节,包括选题策划、嘉宾邀请、物料准备、技术支持等。为了更高效地管理这些活动,我们选择使用Leangoo看板工具来规划和跟踪直播的各项筹备任务。以下分享了使用Leangoo的具体实践,帮助团队更好地协作和推进工作。1.创建直播筹......
  • 98.验证二叉搜索树 Golang实现「自顶向下」
    题目描述:给你一个二叉树的根节点root,判断其是否是一个有效的二叉搜索树。有效二叉搜索树定义如下:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。输入:root=[5,1,4,null,null,3,6]输出:fa......
  • 617. 合并二叉树 Golang实现
    题目描述:给你两棵二叉树:root1和root2。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为null的节点将直接作......
  • 快速上手:Ubuntu上的 Django 框架安装与配置
    快速上手:Ubuntu上的Django框架安装与配置引言Django是一个功能齐全的PythonWeb框架,用于开发动态网站和应用程序。使用Django,你可以快速创建PythonWeb应用程序,并依赖框架完成大量繁重的工作。本指南将帮助你在Ubuntu服务器上安装并运行Django。安装完成后,你将开始一......
  • 提高Google Play马甲包上架成功率的实用攻略和方法
    在移动应用市场中,马甲包(即同一款应用的不同版本)是一种常用的推广策略,尤其是在GooglePlay平台上。通过上架马甲包,开发者可以针对不同的用户群体和市场需求,提高应用的曝光率和下载量。然而,由于GooglePlay对应用的审核越来越严格,如何提高马甲包的上架成功率以及防止账号关联成为......
  • python+Django+MySQL+echarts+bootstrap制作的教学质量评价系统,包括学生、老师、管理
    项目介绍该教学质量评价系统基于Python、Django、MySQL、ECharts和Bootstrap技术,旨在为学校或教育机构提供一个全面的教学质量评估平台。系统主要包括三种角色:学生、老师和管理员,每个角色有不同的功能权限。学生角色:学生可以通过该平台对所选课程进行评价,评价内容包括老师的......
  • 【web】Gin+Go-Micro +Vue+Nodejs+jQuery+ElmentUI 用户模块之vue登录开发以及接口联
    在现代Web应用中,实现用户登录模块是一个关键功能。本文将分为初级、中级、高级阶段,详细说明如何使用Vue、ElementUI进行登录开发,并与Gin、Go-Micro、Node.js进行接口联调。初级用法介绍在初级阶段,主要关注于使用Vue和ElementUI创建一个简单的登录界面,并通过Node.js后端进......
  • 2024 CCF BDCI 小样本条件下的自然语言至图查询语言翻译大模型微调|Google T5预训练语
    代码详见https://gitee.com/wang-qiangsy/bdci目录一.赛题介绍1.赛题背景2.赛题任务二.关于GoogleT5预训练语言模型1.T5模型主要特点2.T5模型与赛题任务的适配性分析3.模型的优化三.解题思路1.数据准备2.数据处理3.模型训练4.模型评估四.代码实现1.配置类(Config)2.数据集类(Cyp......
  • 解决整合Django与Jinja2兼容性的问题
    提问解决整合Django与Jinja2时遇到了一些兼容性问题。已经按照常规步骤在我的settings.py中配置了Jinja2作为模板引擎,同时保留了Django默认的模板设置。然而尝试同时使用Django和Jinja2时,系统报错提示我没有指定模板。如果我尝试移除Django的默认模板配置,错误信息变成了没......