安装 viper: 首先,你需要确保已经安装了 viper。可以通过运行以下命令来安装 viper:
go get github.com/spf13/viper
创建 yaml 配置文件: 创建一个配置文件 config.yaml
,包含数据库配置信息,例如:
database: host: "localhost" port: 5432 user: "yourusername" password: "yourpassword" dbname: "yourdbname"
创建一个结构体来映射配置文件中的数据库配置信息。
package config type databaseconfig struct { host string port int user string password string dbname string } type config struct { database databaseconfig }
使用 viper 读取配置文件:编写代码来使用 viper 读取 config.yaml
文件,并将配置信息加载到结构体中。
package config import ( "log" "github.com/spf13/viper" ) type databaseconfig struct { host string port int user string password string dbname string } type config struct { database databaseconfig } var appconfig config func initconfig() { viper.setconfigname("config") viper.setconfigtype("yaml") viper.addconfigpath(".") if err := viper.readinconfig(); err != nil { log.fatalf("error reading config file, %s", err) } if err := viper.unmarshal(&appconfig); err != nil { log.fatalf("unable to decode into struct, %v", err) } }
在主程序中初始化配置并使用:initconfig
函数来初始化配置,并将数据库配置信息设置为全局变量。
package config import ( "log" "github.com/spf13/viper" ) type databaseconfig struct { host string port int user string password string dbname string } type config struct { database databaseconfig } var appconfig config func initconfig() { viper.setconfigname("config") // 配置文件名称(无扩展名) viper.setconfigtype("yaml") viper.addconfigpath(".") // 配置文件路径 if err := viper.readinconfig(); err != nil { log.fatalf("error reading config file, %s", err) } if err := viper.unmarshal(&appconfig); err != nil { log.fatalf("unable to decode into struct, %v", err) } } func main() { // 初始化配置 initconfig() // 访问全局配置 dbconfig := appconfig.database fmt.printf("connecting to database %s at %s:%d\n", dbconfig.dbname, dbconfig.host, dbconfig.port) // 继续进行其他操作... }
在这个示例中,我们创建了一个 config 包,包含一个结构体来映射 yaml 配置文件中的数据库配置信息。然后,我们使用 viper 读取和解析配置文件,并将配置信息保存到全局变量 appconfig 中。最后,在主程序中初始化配置并使用全局变量中的数据库配置信息来连接数据库。
记得将 github.com/yourusername/yourproject/config 修改为你实际的包路径,并根据需要调整代码来适应你具体的项目结构和需求。