-
main.go
:package main import ( "fmt" "os" "github.com/spf13/pflag" "github.com/spf13/viper" ) func main() { // 1. 设置 Viper 配置 viper.SetConfigName("config") // 配置文件名(不带后缀) viper.AddConfigPath(".") // 配置文件路径 viper.SetConfigType("yaml") // 配置文件类型 viper.AutomaticEnv() // 自动读取环境变量 // 2. 设置命令行参数 pflag.String("name", "", "project name") pflag.String("host", "", "host address") pflag.String("port", "", "port number") pflag.String("config", "./config.yaml", "config file") // 配置文件参数 pflag.Parse() viper.BindPFlags(pflag.CommandLine) // 将命令行参数绑定到 Viper // 3. 读取配置文件 if configFile := viper.GetString("config"); configFile != "" { fmt.Println(configFile) if err := viper.ReadInConfig(); err != nil { fmt.Fprintf(os.Stderr, "读取配置文件失败:%v\n", err) os.Exit(1) } } // 4. 读取配置项 projectName := viper.GetString("name") port := viper.GetInt("port") fmt.Printf("ProjectName: %s, Port: %d\n", projectName, port) }
-
config.yaml
:name: hello host: 10.10.0.172 port: 9090
-
支持环境变量、命令行参数、YAML 配置文件。
TOC
Viper: Go 项目配置管理
发布于码厩技术博客的所有文章,除注明转载外,均为作者原创,欢迎转载,但必须注明出处。
尊重他人劳动,共创开源社区!转载请注明以下信息:
转载来源: 码厩技术博客 [https://www.markjour.com]
原文标题:Viper: Go 项目配置管理
原文地址:/article/20220722-viper.html
尊重他人劳动,共创开源社区!转载请注明以下信息:
转载来源: 码厩技术博客 [https://www.markjour.com]
原文标题:Viper: Go 项目配置管理
原文地址:/article/20220722-viper.html
