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
相关产品推荐
相关产品推荐

