如何使用go:embed读取应用程序属性

kcwpcxri  于 11个月前  发布在  Go
关注(0)|答案(2)|浏览(100)

我使用viper来加载运行时环境特定的属性文件(位于./mysql/*.conf下)。我想看看如何将这些文件嵌入到二进制文件中。
下面的代码段加载文件

viper.AddConfigPath("./configs")
viper.SetConfigName("app_dev.conf")
viper.ReadInConfig()

字符串
我尝试使用以下嵌入指令

//go:embed configs/*.conf
var resources embed.FS


然而,得到一个错误,它不能加载属性文件。它的工作,如预期的那样,如果我添加配置文件夹在同一位置的二进制文件。

taor4pac

taor4pac1#

我意识到我可以使用io.reader来加载Viper配置

data, _ := _configFile.ReadFile("configs/app_dev.conf")
err = viper.ReadConfig(strings.NewReader(string(data)))

字符串

cvxl0en2

cvxl0en22#

下面是原始问题的答案(带有文件嵌入)可能是这样的:

import (
    "bytes"
    "embed"
    "github.com/spf13/viper"
)

//go:embed configs/*.conf
var resources embed.FS

data, err := resources.ReadFile("configs/app_dev.conf")
if err != nil {
    panic(err)
}
err = viper.ReadConfig(bytes.NewReader(data))

字符串

相关问题