3

Go读取yaml文件到struct类 - 壮壮熊

 1 year ago
source link: https://www.cnblogs.com/zhouqinxiong/p/17056229.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

440176-20230116201954207-2114701304.jpg
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)

}

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK