我有以下问题:我以 yaml 形式接收信息,它可以有 2 种配置 - 单个字符:
Character:
Name: Stackoverflow
Type: Awesome
或者在多个字符的切片中,带有朋友切片的可选字段:
Character:
- Name: Stackoverflow
Type: Awesome
Friends: [Ben, John]
- Name: Facebook
Type: Ok
因为我不知道哪个配置会到达,所以我尝试将 yaml 解组为 interface{},然后将其转换为其中一个结构,但没有成功:
type CharacterConfig struct{
Name string `yaml:"Name"`
Type string `yaml:"Type"`
Friends []string `yaml:"Friends,omitempty"`
var d interface{}
err := yaml.Unmarshal([]byte(yamlData), &d)
if err != nil {
panic(err)
}
res, ok := d.(CharacterConfig)
if ok {
fmt.Println("CharacterConfig are ok")
}
res, ok := d.([]CharacterConfig)
if ok {
fmt.Println("[]CharacterConfig are ok")
}
但是我没有收到任何打印...当我调试时,我可以看到解组到接口的工作,但没有铸件。我知道我可以直接解组到结构中,但我不明白我所做的一切没有奏效。
拉丁的传说
慕丝7291255
相关分类