登录
首页 >  Golang >  Go问答

在 golang 中读取 yaml 配置文件,我总是需要结构吗?

来源:stackoverflow

时间:2024-03-17 16:18:28 320浏览 收藏

在 Go 中使用 gopkg.in/yaml.v2 库读取 YAML 配置文件时,您通常需要创建一个与 YAML 文件结构对应的结构体。但是,如果您只需要读取配置中的常量,则可以将 YAML 文件解组到一个空接口中,从而避免创建结构体。这可以通过使用 yaml.Unmarshal() 函数并将输入解组到 &data 变量来实现。需要注意的是,解组后的数据将存储在 map[interface{}]interface{} 中,而不是 map[string]interface{} 中。

问题内容

我想从 golang 中的 yaml 读取配置常量。

示例: 我有 config.yml

server:
  host: "localhost"
  port: 8080

和一个配置结构

type config struct {
    server struct {
        port string `yaml:"port"`
        host string `yaml:"host"`
    } `yaml:"server"`
}

然后我可以这样读:

f, err := os.Open("config.yml")
if err != nil {
    processError(err)
}

var cfg Config
decoder := yaml.NewDecoder(f)
err = decoder.Decode(&cfg)
if err != nil {
    processError(err)
}

我正在使用 gopkg.in/yaml.v2

我想解析它然后读取常量,我需要有一个带有配置的结构吗 结构?

提前致谢


解决方案


您可以将 yaml 文件解组到接口中{}:

var data interface{}
yaml.Unmarshal(input,&data)

需要注意的一件事是 https://gopkg.in/yaml.v2 库解组为 map[interface{}]interface{},而不是 map[string]interface{}。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>