2 回答

TA貢獻1862條經(jīng)驗 獲得超7個贊
謝謝我的朋友們。我想出了辦法做到這一點
func initialCube(shape []int) []interface{} {
// base condition
if len(shape) <= 1 {
dim := shape[len(shape)-1]
retObj := make([]interface{}, dim)
for i := 0; i < dim; i++ {
retObj[i] = 0.0
}
return retObj
} else { // recursive
dim := shape[len(shape)-1]
retObj := make([]interface{}, dim)
for i := 0; i < dim; i++ {
retObj[i] = initialCube(shape[:len(shape)-1])
}
return retObj
}
}

TA貢獻1835條經(jīng)驗 獲得超7個贊
這看起來像什么dolmen-go/multidim
(它有助于分配具有所需元素數(shù)量的切片):
package main
import (
"fmt"
"github.com/dolmen-go/multidim"
)
func main() {
var cube [][][]int
multidim.Init(&cube, 8, 2, 2, 2)
fmt.Println(cube)
}
輸出:
[[[8 8] [8 8]] [[8 8] [8 8]]]
您還可以使用一個函數(shù)(仍然使用相同的庫)來初始化您的 3*2 切片:
package main
import (
"fmt"
"github.com/dolmen-go/multidim"
)
func main() {
var a [][]int
multidim.Init(&a, func(i, j int) int {
return 2*i + j + 1
}, 3, 2)
fmt.Println(a)
var r [][]string
multidim.Init(&r, func(i, j int) string {
return "foobar"[i*3+j : i*3+j+1]
}, 2, 3)
fmt.Println(r)
}
輸出:
[[1 2] [3 4] [5 6]]
[[f o o] [b a r]]
- 2 回答
- 0 關(guān)注
- 160 瀏覽
添加回答
舉報