Go读取yaml文件到struct类
2024-10-20 16:05:00
1、yaml文件准备
common:
secretid: AKIDxxxxx
secretKey: 3xgGxxxx
egion: ap-guangzhou
zone: ap-guangzhou-7
InstanceChargeType: POSTPAID_BY_HOUR
2、config配置类准备
可以通过在线配置工具转换成struct
例如:https://www.printlove.cn/tools/yaml2go
代码:
type ConfigData struct {
// 公共配置
Common Common `yaml:"common"`
}
type Common struct {
// 密钥id。密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
SecretId string `yaml:"secretid"`
// 密钥key
SecretKey string `yaml:"secretKey"`
// 地域
Region string `yaml:"region"`
// 可用区
Zone string `yaml:"zone"`
//实例计费模式。取值范围:PREPAID:预付费,即包年包月。POSTPAID_BY_HOUR:按小时后付费。
InstanceChargeType string `yaml:"InstanceChargeType"`
}
3、读取配置文件到配置类
使用viper读取配置到配置类中
3.1、安装Viper组件
go install github.com/spf13/viper@latest
3.2、golang** **代码编写
yaml文件放在工程根目录的data文件夹中
package main
import (
"bufio"
"github.com/spf13/viper"
"io"
"os"
"strings"
)
type ConfigData struct {
// 公共配置
Common Common `yaml:"common"`
}
type Common struct {
// 密钥id。
SecretId string `yaml:"secretid"`
// 密钥key
SecretKey string `yaml:"secretKey"`
// 地域
Region string `yaml:"region"`
// 可用区
Zone string `yaml:"zone"`
//实例计费模式。取值范围:PREPAID:预付费,即包年包月。POSTPAID_BY_HOUR:按小时后付费。
InstanceChargeType string `yaml:"InstanceChargeType"`
}
func InitConfigStruct(path string) *ConfigData {
var ConfigData = &ConfigData{}
vip := viper.New()
vip.AddConfigPath(path)
vip.SetConfigName("config")
vip.SetConfigType("yaml")
//尝试进行配置读取
if err := vip.ReadInConfig(); err != nil {
panic(err)
}
err := vip.Unmarshal(ConfigData)
if err != nil {
panic(err)
}
return ConfigData
}
func main(){
configData := InitConfigStruct("./data/")
secretId := configData.Common.SecretId
secretKey := configData.Common.SecretKey
fmt.Printf("secretId:%s\n", secretId)
fmt.Printf("secretKey:%s\n", secretKey)
}
最新文章
- beautifulSoup(1)
- Linux第02天
- 。tar.gz(bz或bz2等)安装
- 正则表达式统计java代码空白行,有效代码
- rabbitmq心跳机制与配置
- 怎么看网站是否开启CDN加速?测试网站全国访问速度方法详解
- Games:取石子游戏(POJ 1067)
- Android之使用AchartEngineActivity引擎绘制柱状图、曲线图
- 暑假集训(5)第二弹———湫湫系列故事——减肥记I(hdu4508)
- QT软键盘
- Loadrunner11不能调用IE8解决方法大全
- 是否有必要学习使用纯Verilog写一个SDRAM控制器
- dnmp(docker的lnmp)安装WordPress之后图片上传问题 问题:图片上传大小问题解决和 报错413 Request Entity Too Large
- Django【跨域】
- Java————迷宫问题
- ASP.NET MVC 学习笔记-7.自定义配置信息
- java中long类型的比较
- dubbo源码分析3——SPI机制中的ExtensionLoader类的objectFactory属性分析
- Shell编程中while与for的区别及用法详解【转】
- jemter 新增sha256函数
热门文章
- Java安全之Tomcat6 Filter内存马
- Scrapy 如何传递 get请求的params
- Codeforces Round #811 (Div. 3)D. Color with Occurrences
- Redis管理及监控工具推荐
- 【题解】P7860 [COCI2015-2016#2] ARTUR
- 谈软件-专家谈C/C++重构的操作与思路
- CentOS 7.x字符界面安装图形界面方法
- Redis集群研究和实践(基于redis 3.2.5)(一)
- i春秋wanna to see your hat?
- java - - spring:定时任务