Avatar ·

如何在Go中正确处理配置:ENV、JSON、YAML还是命令行参数?

大家好!我是一名Go新手开发者,正在编写我的第一个用于处理订单的微服务。我遇到了一个问题:不知道如何正确组织配置参数(服务器端口、数据库连接字符串、外部API的URL、超时时间等)的存储。 目前我只是在main.go中硬编码了所有内容: ```go package main import ( "fmt" "net/http" ) func main() { port := ":8080" dbConn := "postgres://user:pass@localhost:5432/orders?sslmode=disable" apiURL := "https://api.example.com" fmt.Println("Starting server on", port) http.ListenAndServe(port, nil) } ``` 我明白这很糟糕:当环境(dev/staging/prod)发生变化时,需要重新编译二进制文件,而且代码中的密码简直就是安全灾难。我看到Go中使用了不同的方法:命令行参数、环境变量、JSON/YAML/Toml文件。但应该选择哪种?如何整合多个来源?如何使配置具有类型安全性?