如何在 Go 中创建 3(或更多)维切片?
问问题
435 次
2 回答
5
var xs, ys, zs = 5, 6, 7 // axis sizes
var world = make([][][]int, xs) // x axis
func main() {
for x := 0; x < xs; x++ {
world[x] = make([][]int, ys) // y axis
for y := 0; y < ys; y++ {
world[x][y] = make([]int, zs) // z axis
for z := 0; z < zs; z++ {
world[x][y][z] = (x+1)*100 + (y+1)*10 + (z+1)*1
}
}
}
}
这显示了更容易制作 n 维切片的模式。
于 2012-11-29T05:47:54.887 回答
5
你确定你需要一个多维切片吗?如果 n 维空间的维度在编译时是已知的/可导出的,那么使用数组会更容易并且运行时访问性能更好。例子:
package main
import "fmt"
func main() {
var world [2][3][5]int
for i := 0; i < 2*3*5; i++ {
x, y, z := i%2, i/2%3, i/6
world[x][y][z] = 100*x + 10*y + z
}
fmt.Println(world)
}
(也在这里)
输出
[[[0 1 2 3 4] [10 11 12 13 14] [20 21 22 23 24]] [[100 101 102 103 104] [110 111 112 113 114] [120 121 122 123 124]]]
于 2012-11-29T06:49:24.660 回答