golang中的动态数组维度

我正在尝试在 Golang 中创建一个高维数组。
有谁知道该怎么做?

例如

  • dims := [3,2,1]作为参数 -> 想要high_dims_array := make([3][2][1]int, 0)

  • dims := [2]-> 想要high_dims_array := make([2]int, 0)

  • dims := [3,3]-> 想要high_dims_array := make([3][3]int, 0)

其中dims是包含维度的变量。


POPMUISE
浏览 139回答 2
2回答

牧羊人nacy

谢谢我的朋友们。我想出了办法做到这一点func initialCube(shape []int) []interface{} {&nbsp; &nbsp; // base condition&nbsp; &nbsp; if len(shape) <= 1 {&nbsp; &nbsp; &nbsp; &nbsp; dim := shape[len(shape)-1]&nbsp; &nbsp; &nbsp; &nbsp; retObj := make([]interface{}, dim)&nbsp; &nbsp; &nbsp; &nbsp; for i := 0; i < dim; i++ {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; retObj[i] = 0.0&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; return retObj&nbsp; &nbsp; } else { // recursive&nbsp; &nbsp; &nbsp; &nbsp; dim := shape[len(shape)-1]&nbsp; &nbsp; &nbsp; &nbsp; retObj := make([]interface{}, dim)&nbsp; &nbsp; &nbsp; &nbsp; for i := 0; i < dim; i++ {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; retObj[i] = initialCube(shape[:len(shape)-1])&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; return retObj&nbsp; &nbsp; }}

qq_花开花谢_0

这看起来像什么dolmen-go/multidim(它有助于分配具有所需元素数量的切片):package mainimport (&nbsp; &nbsp; "fmt"&nbsp; &nbsp; "github.com/dolmen-go/multidim")func main() {&nbsp; &nbsp; var cube [][][]int&nbsp; &nbsp; multidim.Init(&cube, 8, 2, 2, 2)&nbsp; &nbsp; fmt.Println(cube)}输出:[[[8 8] [8 8]] [[8 8] [8 8]]]您还可以使用一个函数(仍然使用相同的库)来初始化您的 3*2 切片:package mainimport (&nbsp; &nbsp; "fmt"&nbsp; &nbsp; "github.com/dolmen-go/multidim")func main() {&nbsp; &nbsp; var a [][]int&nbsp; &nbsp; multidim.Init(&a, func(i, j int) int {&nbsp; &nbsp; &nbsp; &nbsp; return 2*i + j + 1&nbsp; &nbsp; }, 3, 2)&nbsp; &nbsp; fmt.Println(a)&nbsp; &nbsp; var r [][]string&nbsp; &nbsp; multidim.Init(&r, func(i, j int) string {&nbsp; &nbsp; &nbsp; &nbsp; return "foobar"[i*3+j : i*3+j+1]&nbsp; &nbsp; }, 2, 3)&nbsp; &nbsp; fmt.Println(r)}输出:[[1 2] [3 4] [5 6]][[f o o] [b a r]]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go