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) }

最新文章

  1. beautifulSoup(1)
  2. Linux第02天
  3. 。tar.gz(bz或bz2等)安装
  4. 正则表达式统计java代码空白行,有效代码
  5. rabbitmq心跳机制与配置
  6. 怎么看网站是否开启CDN加速?测试网站全国访问速度方法详解
  7. Games:取石子游戏(POJ 1067)
  8. Android之使用AchartEngineActivity引擎绘制柱状图、曲线图
  9. 暑假集训(5)第二弹———湫湫系列故事——减肥记I(hdu4508)
  10. QT软键盘
  11. Loadrunner11不能调用IE8解决方法大全
  12. 是否有必要学习使用纯Verilog写一个SDRAM控制器
  13. dnmp(docker的lnmp)安装WordPress之后图片上传问题 问题:图片上传大小问题解决和 报错413 Request Entity Too Large
  14. Django【跨域】
  15. Java————迷宫问题
  16. ASP.NET MVC 学习笔记-7.自定义配置信息
  17. java中long类型的比较
  18. dubbo源码分析3——SPI机制中的ExtensionLoader类的objectFactory属性分析
  19. Shell编程中while与for的区别及用法详解【转】
  20. jemter 新增sha256函数

热门文章

  1. Java安全之Tomcat6 Filter内存马
  2. Scrapy 如何传递 get请求的params
  3. Codeforces Round #811 (Div. 3)D. Color with Occurrences
  4. Redis管理及监控工具推荐
  5. 【题解】P7860 [COCI2015-2016#2] ARTUR
  6. 谈软件-专家谈C/C++重构的操作与思路
  7. CentOS 7.x字符界面安装图形界面方法
  8. Redis集群研究和实践(基于redis 3.2.5)(一)
  9. i春秋wanna to see your hat?
  10. java - - spring:定时任务