Saltar al contenido

Crear una matriz de literal de matriz en Golang

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}}

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *