That looks like what dolmen-go/multidim
does (it helps to allocate a slice with the required number of elements):
package main
import (
"fmt"
"github.com/dolmen-go/multidim"
)
func main() {
var cube [][][]int
multidim.Init(&cube, 8, 2, 2, 2)
fmt.Println(cube)
}
Output:
[[[8 8] [8 8]] [[8 8] [8 8]]]
You can also use a function (still with the same library) to initialize your 3*2 slice:
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)
}
Output:
[[1 2] [3 4] [5 6]]
[[f o o] [b a r]]