Golang系列 viper配置管理的小技巧
本文最后更新于 2025年2月05日, 如有失效请评论区留言。

前言

在团队开发中, 每个人的本地环境配置, 或有不同. 如果每个人的配置文件, 都临时改成本地的, 当pull的配置文件有所变动时, 又要撤回自己的变更, 再pull, 再修改.就会显得很不优雅.

实操

新建一个.env文件, 并将其添加到.gitignore来不希望 Git 跟踪, 然后在viper加载配置的时候, 使用godotenv.env文件Load到环境变量中, 再通过viper读取环境变量即可.

安装godotenv

go get -u github.com/joho/godotenv

使用godotenv.Load(".env")即可将配置加载到环境变量中

config.go

var Conf *AppConfig

type AppConfig struct {
    Name         string `mapstructure:"name"`
    *MysqlConfig `mapstructure:"mysql"`
}

type MysqlConfig struct {
    Host        string `mapstructure:"host"`
    Port        int    `mapstructure:"port"`
    User        string `mapstructure:"user"`
    Password    string `mapstructure:"password"`
    Dbname      string `mapstructure:"dbname"`
}

func InitConfig() (err error) {
    // 加载 .env 文件中的配置到环境变量
    // 如果是嵌套的结构体配置, 文件中参数命名格式: 以.连接(如MYSQL.HOST)
    godotenv.Load("../.env")

    v := viper.New()
    v.SetConfigFile("../configs/app.yml") // 指定配置文件路径

    v.SetEnvPrefix("app") // 设置环境变量的前缀
    v.AutomaticEnv()      // 自动读取环境变量

    ...

    return
}

app.yml

name: "go-web"

mysql:
  host: "127.0.0.1"
  port: 3306
  user: "root"
  password: "root"
  database: "db"

.env

APP_MYSQL.HOST=xx.xx.xx.xx
APP_MYSQL.PORT=xxxx
APP_MYSQL.PASSWORD=xxxxx

将需要修改的配置写在.env中即可

注意前缀 和 结构体嵌套时写法

原创声明
本文由 Twist 于2024年11月21日 发表在 柯基屁屁
如未特殊声明,本站所有文章均为原创;你可以在保留作者及原文地址的情况下转
转载请注明:Golang系列 viper配置管理的小技巧 | 柯基屁屁
暂无评论

发送评论 编辑评论


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