【算法】Golang二维数组横纵切片问题

二维数组切片初始化:

test := [][]int{
		{1, 2, 3, 4},
		{5, 6, 7, 8},
		{9, 10, 11, 12},
		{13, 14, 15, 16},
	}
	n := len(test) // rowsnum
	m := len(test[0])  // colsnum

二维数组输出:

for i := 0; i < len(test); i++ {
		fmt.Println(test[i])
	}

声明二维数组并初始化:

var c [][]int
for i := 0; i < n; i++ {
	temp := make([]int, n)
	c = append(c, temp)
}

注意,写算法时有个需求,是截取二维数组(矩阵),比如一个4x4的矩阵a,想要得到其左上角2x2的矩阵a11:

var a11 [][]int
for i := 0; i < n/2; i++ {
	a11 = append(a11, a[i][0:n/2])
}

本来想写 a[0:n/2][0:n/2],但是其实这个表达式的意思是从二维数组a中取前n/2行,在从取出的二维数组中再次取n/2行。并不是我以为的二维数组切片。(天nao真chou了

猜你喜欢

转载自blog.csdn.net/ll523587181/article/details/81135207
今日推荐