提问人:elklepo 提问时间:10/11/2023 最后编辑:Jonathan Hallelklepo 更新时间:10/11/2023 访问量:55
对二维数组进行切片
Slicing a two dimensional array
问:
我正在努力学习利用切片提供的所有好处。
我为自己创建的挑战任务是为二维数组(偶数维)创建一个切片,以便可以从 .0
len(matrix/2)
我编写了一个代码来实现这个挑战(矩阵维度现在硬编码为 4 - 见问题):2.
package main
import (
"fmt"
"strings"
)
// print matrix
// TODO: remove hardcoded dimension by accepting slice instead of array
func printMatrix(matrix [4][4]int) {
fmt.Println("+", strings.Repeat("-", 2*len(matrix)-1), "+")
for i := 0; i < len(matrix); i++ {
fmt.Println("|", strings.Trim(strings.Join(strings.Fields(fmt.Sprint(matrix[i])), " "), "[]"), "|")
}
fmt.Println("+", strings.Repeat("-", 2*len(matrix)-1), "+")
}
const MatrixDim = 4
func main() {
// init matrix
matrix := [MatrixDim][MatrixDim]int{}
// print matrix initial state
printMatrix(matrix)
// initialize lower right quadrant view
matrixView := make([][]int, MatrixDim/2)
for i := 0; i < MatrixDim/2; i++ {
matrixView[i] = matrix[i+MatrixDim/2][MatrixDim/2:]
}
// modify lower right quadrant using the 0-indexed view
matrixView[0][0] = 1
matrixView[0][1] = 2
matrixView[1][0] = 3
matrixView[1][1] = 4
// print modified matrix
printMatrix(matrix)
}
/*
OUTPUT:
+ ------- +
| 0 0 0 0 |
| 0 0 0 0 |
| 0 0 0 0 |
| 0 0 0 0 |
+ ------- +
+ ------- +
| 0 0 0 0 |
| 0 0 0 0 |
| 0 0 1 2 |
| 0 0 3 4 |
+ ------- +
*/
- 我想知道是否有一种更简单、更干净的方法来为右下象限创建 0 索引视图(没有初始化循环)
- 说到好的做法 - 我知道应该接受或指针作为参数(而不是)。我想知道是否最好定义 as 并将其指针/切片传递给,或者我应该从一开始就将其定义为 a?
printMatrix()
slice
array
array
matrix
array
printMatrix()
slice
答: 暂无答案
评论