前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go读取yaml文件到struct类

Go读取yaml文件到struct类

原创
作者头像
壮壮熊
修改2023-01-17 15:06:23
8280
修改2023-01-17 15:06:23
举报
文章被收录于专栏:程序猿牧场程序猿牧场

1、yaml文件准备

代码语言: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

代码:

代码语言:go
复制
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组件

代码语言:shell
复制
go install github.com/spf13/viper@latest

3.2、golang** **代码编写

yaml文件放在工程根目录的data文件夹中

代码语言:go
复制

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 {

代码语言:txt
复制
  panic(err)

}

err := vip.Unmarshal(ConfigData)

if err != nil {

代码语言:txt
复制
  panic(err)

}

return ConfigData

}

func main(){

代码语言:txt
复制
configData := InitConfigStruct("./data/")
代码语言:txt
复制
secretId := configData.Common.SecretId
代码语言:txt
复制
secretKey := configData.Common.SecretKey
代码语言:txt
复制
fmt.Printf("secretId:%s\n", secretId)
代码语言:txt
复制
fmt.Printf("secretKey:%s\n", secretKey)

}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、yaml文件准备
  • 2、config配置类准备
  • 3、读取配置文件到配置类
    • 3.1、安装Viper组件
      • 3.2、golang** **代码编写
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档