go配置管理-Viper的简单使用

此文章只是对Viper库的简单使用,读取本地配置文件(json,yaml….) 其他使用操作可以观看官方文档

配置类

MySQL

import (
    "fmt"
)

// MySQL配置
type mysqlConfig struct {
    Host     string `mapstructure:"host" yaml:"host"`         // 主机
    Port     int    `mapstructure:"port" yaml:"port"`         // 端口
    User     string `mapstructure:"user" yaml:"user"`         // 用户名
    Password string `mapstructure:"password" yaml:"password"` // 密码
    Db       string `mapstructure:"db" yaml:"db"`             // 数据库名称
}

// GetDSN 返回 MySQL 连接字符串
func (c mysqlConfig) GetDSN() string {
    return fmt.Sprintf("%s:%s@tcp(%s:%v)/%s?charset=utf8mb4&parseTime=True&loc=Local",
        c.User, c.Password, c.Host, c.Port, c.Db)
}

配置信息

var Scd systemConfigData

// 配置信息
type systemConfigData struct {
    MySQL mysqlConfig `mapstructure:"mysql" yaml:"mysql"` // MySQL配置
    Redis redisConfig `mapstructure:"redis" yaml:"redis"` // Redis配置
}

配置文件 config.yaml

mysql:
  host: 127.0.0.1
  port: 3306
  user: root
  password: root
  db: test

redis:
  host: 127.0.0.1
  port: 6379
  password: loser123
  db: 0

读取配置文件

var localVp *viper.Viper

func initLocaConfig() {
    localVp = viper.New()

    localVp.SetConfigName("config") // 文件名-无需文件后缀
    localVp.SetConfigType("yaml")   // 文件扩展名
    localVp.AddConfigPath(".")      //可选项 指定文件路径

    // 处理读取配置文件的错误
    if err := localVp.ReadInConfig(); err != nil {
        if _, ok := err.(viper.ConfigFileNotFoundError); ok {
            panic(fmt.Errorf("未找到配置文件,请检查路径: %s \n", err))
        } else {
            panic(fmt.Errorf("文件已找到,但读取文件时出错: %s \n", err))
        }
    }

    // 解析配置文件为结构体
    if err := localVp.Unmarshal(&config.Scd); err != nil {
        logger.Say.Panic(err)
    }
}

启动后我们就可以看到MySQL就已经初始化链接成功来了

image-20220515220224790

评论

  1. 874258548
    2年前
    2022-7-06 22:04:53

    hello

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇