【发布时间】:2019-01-17 09:42:48
【问题描述】:
我创建了以下 YAML 文件来提供一些用户需要提供的配置:
Environments:
sys1:
models:
- app-type: app1
service-type: “fds"
- app-type: app2
service-type: “era”
sys2:
models:
- app-type: app1
service-type: “fds"
- app-type: app2
service-type: “era"
https://codebeautify.org/yaml-validator/cbb349ec
这里有:
- 一个环境(根)
- 环境包含 1..n
sys - 每个
sys包含 1..n 个模型实例,其关键应用类型
现在我需要解析这个 YAML 文件,所以我尝试构建一个结构类型,例如:
type Environment struct {
Environment [] sys
}
type sys struct{
Models []Properties
}
type Models struct{
app-type string `yaml:"app-type"`
service-type string `yaml:"service-type"`
}
现在我尝试解析这个 YAML,我得到一个索引超出范围的错误。
我的问题是:
1. Do I model the YAML correctly?
2. Do I model the struct correctly?
这是代码:
func main() {
y := Environments{}
err := yaml.Unmarshal([]byte(data), &y)
if err != nil {
log.Fatalf("error: %v", err)
}
fmt.Printf("%+v\n", y)
}
数据是yaml.file。
【问题讨论】:
-
你的 Go 代码和 YAML 都无效,可以发一个MCVE吗?
-
@Adrian - 查看链接,yaml 确实有效
-
链接中的 YAML 不是问题中的 YAML,Go 代码仍然无效。
-
@Adrian - 完成,请重新检查
-
Go 代码仍然无效。如果您对某些代码有疑问,请发布该代码。如果该代码太大而无法发布,请将其缩减为重现问题的最小可能代码(即最小、完整、可验证的示例),然后发布该代码。您可能会发现这样做可以解决您自己的问题;如果没有,那么社区将有一个可以帮助您的工作示例。