当前位置: 首页 > news >正文

go 读取yaml映射到struct

  1. 安装
go get gopkg.in/yaml.v3
  1. 创建yaml
Mysql:Host: 192.168.214.134Port: 3306UserName: wwPassword: wwDatabase: go_dbCharset: utf8mb4ParseTime: trueLoc: LocalListValue:- haha- test- vv
JWTSecret: nidaye
  1. 定义结构体
type Mysql struct {Host      string   `yaml:"Host"`Port      int      `yaml:"Port"`UserName  string   `yaml:"UserName"`Password  string   `yaml:"Password"`Database  string   `yaml:"Database"`Charset   string   `yaml:"Charset"`ParseTime bool     `yaml:"ParseTime"`Loc       string   `yaml:"Loc"`ListValue []string `yaml:"ListValue"`
}type YamlStruct struct {Mysql     Mysql  `yaml:"Mysql"`JWTSecret string `yaml:"JWTSecret"`
}
  1. 读取
package mainimport ("fmt""os""gopkg.in/yaml.v3"
)type Mysql struct {Host      string   `yaml:"Host"`Port      int      `yaml:"Port"`UserName  string   `yaml:"UserName"`Password  string   `yaml:"Password"`Database  string   `yaml:"Database"`Charset   string   `yaml:"Charset"`ParseTime bool     `yaml:"ParseTime"`Loc       string   `yaml:"Loc"`ListValue []string `yaml:"ListValue"`
}type YamlStruct struct {Mysql     Mysql  `yaml:"Mysql"`JWTSecret string `yaml:"JWTSecret"`
}func ReadConf(filename string) (*YamlStruct, error) {buf, err := os.ReadFile(filename)c := YamlStruct{}if err != nil {return nil, err} else {err2 := yaml.Unmarshal(buf, &c)if err2 != nil {return nil, err2} else {return &c, nil}}
}func main() {c, _ := ReadConf("./config.yaml")fmt.Printf("c: %v\n", c.Mysql.ListValue)}
http://www.lryc.cn/news/141894.html

相关文章:

  • Redis 10 大数据类型
  • 优化生产流程:数字化工厂中的OPC UA分布式IO模块应用
  • Elasticsearch(十四)搜索---搜索匹配功能⑤--全文搜索
  • 已解决Gradle错误:“Unable to load class ‘org.gradle.api.plugins.MavenPlugin‘”
  • windows中安装sqlite
  • 前端面试:【系统设计与架构】前端架构模式的演进
  • 【CSS】em单位的理解
  • 无涯教程-Python机器学习 - Based on human supervision函数
  • 【滑动窗口】leetcode209:长度最小的子数组
  • C++ STL unordered_map
  • 全流程R语言Meta分析核心技术应用
  • Go并发可视化解释 - Select语句
  • 在线SM4(国密)加密解密工具
  • golang的类型断言语法
  • 提速换挡 | 至真科技用技术打破业务壁垒,助力出海破局增长
  • 第3篇:vscode搭建esp32 arduino开发环境
  • Apache Shiro是什么
  • Socket基本原理
  • Docker容器:本地私有仓库、harbor私有仓库部署与管理
  • Mobx在非react组件中修改数据,在ts/js中修改数据实现响应式更新
  • 什么是异步编程?什么是回调地狱(callback hell)以及如何避免它?
  • Java8 Stream流常见操作--持续更新中
  • 【Linux】多线程概念线程控制
  • Qt --- 自定义提示框 类似QMessagebox
  • Redis 分布式锁与 Redlock 算法实现
  • 【附安装包】Inventor2024安装教程 机械制图|三维制图
  • c++ 判断基类指针指向的真实对象类型
  • 退出屏保前玩一把游戏吧!webBrowser中网页如何调用.NET方法
  • hive-列转行
  • 【网络】IP网络层和数据链路层