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

Go语言如何打印[][]interface{}并提取切片指定位置元素

问题原因&解决方案

你直接调用内置println打印切片只会输出切片的长度、容量和底层数组的内存地址,不会打印具体元素内容,同时你的结构体定义可以优化减少类型转换逻辑,以下是两种实现方案:

方案1:基于你现有结构体调整

你只需要把原来的println(data.Activities)替换为如下遍历逻辑即可,注意要先导入fmt包:

for _, item := range data.Activities {
    // 避免子数组长度不足导致索引越界
    if len(item) < 5 {
        continue
    }
    // JSON解析数字到interface{}默认类型为float64,需要先断言再转换为整型
    num1, ok1 := item[3].(float64)
    num2, ok2 := item[4].(float64)
    if !ok1 || !ok2 {
        continue
    }
    fmt.Printf("%d,%d\n", int(num1), int(num2))
}

另外注意你代码中用error作为变量名不合适,error是Go内置的类型名,建议修改为err避免命名冲突。

方案2:优化结构体定义简化逻辑

由于返回的activities所有子元素都是整数,你可以直接把结构体的Activities字段定义为[][]int64,无需使用[][]interface{},省去类型断言步骤:
修改后的结构体:

type ActivityResp struct {
    Success         bool     `json:"success"`
    Activities      [][]int64 `json:"activities"`
    ActivitiesCount int      `json:"activities_count"`
}

对应遍历代码:

for _, act := range data.Activities {
    if len(act) >= 5 {
        fmt.Printf("%d,%d\n", act[3], act[4])
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 08:45:01