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