我是一个Golang的新手。 我想编写一个程序来管理我的Redis实例,以便可以创建一个带有特定配置文件的Redis连接。但我不知道如何优雅地创建Redis实例的配置文件。
我之前发现了"text/template",这个是一个好主意吗?
这取决于您想要支持哪种配置文件格式。
一个能够读取大多数格式(从简单的ini文件到JSON文件)的库是spf13/viper:
Viper是Go应用程序的完整配置解决方案。它已经被设计为在应用程序内部处理所有类型的配置。它支持
- 设置默认值
- 从yaml、toml和json配置文件中读取
- 从环境变量中读取
- 从远程配置系统(Etcd或Consul)中读取
- 从命令行标志中读取
- 设置显式值
Redis配置文件采用简单的文本格式。您可以使用fmt包生成配置文件:
fmt.Fprintf(w, "pidfile %s\n", pidFile)
fmt.Fprintf(w, "port %d\n", port)
其中w
是用于输出的io.Writer
。
text/template
包也是一个可行的选项。给定模板:
pidfile {{.PidFile}}
port {{.Port}}
您可以使用以下命令来执行它:
t.Execute(w, map[string]interface{}{
"PidFile": pidFile,
"Port": port,
})
// +build
功能。
按照以下方式在config
包中创建4个文件:
src/program/config
|
|--config_dev.go
|--config_test.go
|--config_staging.go
|--config_prod.go
然后在每个文件中,您定义了使用该文件的标记来进行go build
(或运行等)过程。
这意味着例如在config_dev.go中:
// +build dev
package config
// Development ready configuration const based on the build tags.
const (
MYSETTINGS = "dev blablabla"
ISREADY = false
)
// +build test
package config
// Development ready configuration const based on the build tags.
const (
MYSETTINGS = "test blablabla"
ISREADY = true
)
请注意// +build dev
和// +build test
。这些是您在构建过程中要使用的标签,以告诉您要使用哪个配置文件。
在任何其他Go文件中,您只需调用config.ISREADY
,而无需在文件中导入任何除"config"
之外的内容。
然后要构建您的应用程序,您只需运行:
go build -tags dev
以使用开发配置进行构建
或者
go build -tags test
以使用测试配置进行构建。