您当前的位置:首页 >> 大数据 >  正文
Go读取yaml文件到struct类
来源: 腾讯云      时间:2023-01-17 10:13:35


(资料图片)

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 mainimport (   "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)}

X 关闭

X 关闭