Solución:
Casi tiene lo correcto, sin embargo, su sintaxis para las matrices internas está un poco fuera de lugar, necesitando llaves como; test := [][]int{[]int{1,2,3},[]int{1,2,3}}
o una versión un poco más concisa; test := [][]int{{1,2,3},{1,2,3}}
La expresión se denomina ‘literal compuesto’ y puede leer más sobre ellos aquí; https://golang.org/ref/spec#Composite_literals
Pero como regla básica, si tiene estructuras anidadas, debe usar la sintaxis de forma recursiva. Es muy detallado.
En algunos otros idiomas (Perl, Python, JavaScript), [1,2,3]
podría ser un literal de matriz, pero en Go, los literales compuestos usan llaves, y aquí, debe especificar el tipo de segmento externo:
package main
import "fmt"
type T struct{ foo [][]int }
func main() {
a := [][]int{{1, 2, 3}, {4, 5, 6}}
b := T{foo: [][]int{{1, 2, 3}, {4, 5, 6}}}
fmt.Println(a, b)
}
Puedes correr o jugar con eso en el patio de juegos.
El compilador Go es lo suficientemente complicado como para descubrir que los elementos de un [][]int
están []int
sin que usted lo diga en cada elemento. Sin embargo, debe escribir el nombre del tipo externo.
Simplemente reemplace los corchetes con llaves. En Go, los literales de matriz se identifican con llaves.
test := [][]int{{1,2,3},{1,2,3}}