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

Go语言如何向结构体中*[]Category类型的切片指针追加数据?

Go 切片指针的append操作解决方案

错误原因

  • append内置函数要求第一个入参为切片类型,第二段代码中Categories是*[]Category类型的切片指针,直接传入append会触发类型不匹配报错
  • 零值声明的指针默认是nil,未指向实际的切片内存空间,未初始化直接操作会触发空指针异常

修复方案

仅需在main函数中做两处调整即可实现和原代码完全一致的效果:

  1. 初始化book.Categories指针,使其指向一个空的[]Category切片
  2. 执行append操作时,先对切片指针做*解引用拿到底层切片,操作完成后赋值回解引用后的地址

修改后的完整main函数代码

func main() {
    var book Book

    book.Id = 1
    book.Name = "Vanaraj"
    // 新增:初始化切片指针
    book.Categories = &[]Category{}

    for i := 0; i < 10; i++ {
        // 修改:解引用后执行append
        *book.Categories = append(*book.Categories, Category{
            Id:   10,
            Name: "Vanaraj",
        })
    }

    // 若要完全匹配原输出格式,打印时对Categories解引用即可
    fmt.Printf("{%d %s %v}\n", book.Id, book.Name, *book.Categories)
}

运行后输出和第一段代码完全一致,会输出包含10个Category元素的结构体内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 13:24:00