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

Go语言:使用make()生成二维切片及解决类型不匹配赋值报错

问题原因与修复方案

首先明确:你声明的var p [2][]int是长度为2的数组,数组的每个元素是int切片,而make([][]int, 2)返回的是二维切片(切片的切片),二者属于不同的类型,所以赋值时会报错。

修复方案有两种,根据你的需求选择:

方案1:保留数组类型,直接初始化元素

因为p已经是长度为2的数组,不需要再用make给整个数组赋值,直接初始化数组里的两个切片元素即可:

var p [2][]int

func yourFunc() {
    n1 := 3 // 示例值
    n2 := 5 // 示例值
    // 移除报错的 p = make([][]int, 2) 这一行
    p[0] = make([]int, n1)
    p[1] = make([]int, n2)
}

方案2:改用二维切片类型

如果你的场景更适合用动态长度的二维切片,修改变量声明为切片类型即可:

var p [][]int // 改为二维切片,不再是固定长度的数组

func yourFunc() {
    n1 := 3
    n2 := 5
    p = make([][]int, 2) // 现在类型匹配,不会报错
    p[0] = make([]int, n1)
    p[1] = make([]int, n2)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 09:09:23