【问题标题】:Golang Viper GetSliceString not parsing yml fileGolang Viper GetSliceString 不解析 yml 文件
【发布时间】:2021-04-28 16:09:04
【问题描述】:

从问题标题中推断,我正在使用 GoLang 和 Viper。我的 element.yml 文件与试图解析它的文件位于同一目录中,它能够获取字符串和整数,但无论出于何种原因,都无法使用 GetStringSlice() 方法获取字符串切片。有人知道我做错了什么吗?我在确认一切正常的验证器中运行了我的 yml。代码如下:

func GetElementString(s string) string {  //works
    vi := viper.New()
    vi.SetConfigFile("element.yml")
    vi.ReadInConfig()
    return vi.GetString(s)
}

func GetElementInt(s string) int {  //works
    vi := viper.New()
    vi.SetConfigFile("element.yml")
    vi.ReadInConfig()
    return vi.GetInt(s)
}

func GetElementSliceString(s string) []string { //does not work
    vi := viper.New()
    vi.SetConfigFile("element.yml")
    vi.ReadInConfig()
    return vi.GetStringSlice(s)
}

元素.yml

key: "value"
urls: 
  - "https://twitter.com/elonmusk"
  - "https://twitter.com/elonmusk/with_replies"
  - "https://twitter.com/elonmusk/likes"

我为驱动方法而编写的测试适用于整数和字符串,但不适用于字符串切片。我做错了什么??

【问题讨论】:

    标签: go yaml viper-go


    【解决方案1】:

    在我的机器上运行它没有问题。
    我建议您尝试捕获读取文件中的错误,看看是否有帮助。
    如果需要,您还可以提供文件路径。

    func GetElementSliceString(s string) []string {
        vi := viper.New()
        vi.SetConfigFile("element.yml")
        vi.AddConfigPath("./")          // Path here
        err := vi.ReadInConfig()        // catch error while reading the configs
        if err != nil {
            panic(err)
        }
        return vi.GetStringSlice(s)
    }
    

    【讨论】:

    • 你在做某事。这似乎是某种目录问题。添加配置路径帮助很大
    猜你喜欢
    • 2013-11-14
    • 2020-12-21
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    • 2020-10-26
    • 2021-02-17
    • 2017-04-30
    • 2018-07-07
    相关资源
    最近更新 更多