You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go中YAML反序列化结构体数组报错的求助(仅修改YAML)

Go YAML反序列化:对象切片类型的正确配置写法

模拟你的代码结构体定义

type F struct {
    G []G `yaml:"g"`
    I []I `yaml:"i"`
}

type G struct {
    Name string `yaml:"name"`
    Age  int    `yaml:"age"`
}

type I struct {
    ID   string `yaml:"id"`
    Flag bool   `yaml:"flag"`
}

正确的YAML写法

多行序列格式(可读性高,推荐)

f:
  g:
    - name: "Alice"
      age: 30
    - name: "Bob"
      age: 25
  i:
    - id: "item-1"
      flag: true
    - id: "item-2"
      flag: false

内联序列格式(适合短列表场景)

f:
  g: [ {name: "Alice", age: 30}, {name: "Bob", age: 25} ]
  i: [ {id: "item-1", flag: true}, {id: "item-2", flag: false} ]

之前错误的原因解析

  1. 错误1:cannot unmarshal !!seq into F
    你大概率把f字段写成了序列(比如f: - g: ...),但F是结构体类型而非切片,YAML序列无法反序列到结构体中。

  2. 错误2:cannot unmarshal !!seq into G/cannot unmarshal !!seq into I
    可能是你错误地将g/i的子字段写成了序列,或者层级混乱(比如把序列写在了g的子层级而非g字段本身),导致程序尝试把序列反序列到单个G/I对象中,而非切片类型。

内容的提问来源于stack exchange,提问作者Pranav N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 03:25:55