Go: matrices multidimensionales en Go

El lenguaje de programación Go permite matrices multidimensionales. Aquí está la forma general de una declaración de matriz multidimensional:

var variable_name [SIZE1][SIZE2]...[SIZEN] variable_type

Por ejemplo, la siguiente declaración crea un 5 tridimensional. 10. 4 matriz de enteros -

var threedim [5][10][4]int

Matrices bidimensionales

Una matriz bidimensional es la forma más simple de una matriz multidimensional. Una matriz bidimensional es, en esencia, una lista de matrices unidimensionales. Para declarar una matriz de enteros bidimensionales de tamaño [x, y], debe escribir algo de la siguiente manera:

var arrayName [ x ][ y ] variable_type

Dónde variable_type puede ser cualquier tipo de datos Go válido y arrayNameserá un identificador Go válido. Una matriz bidimensional se puede pensar como una tabla que tendrá x número de filas y y número de columnas. Una matriz bidimensionala, que contiene tres filas y cuatro columnas, se puede mostrar a continuación:

Por lo tanto, cada elemento de la matriz a se identifica mediante un nombre de elemento de la forma a[ i ][ j ], donde a es el nombre de la matriz e i y j son los subíndices que identifican de forma única cada elemento en a.

Inicialización de matrices bidimensionales

Las matrices multidimensionales se pueden inicializar especificando valores entre corchetes para cada fila. A continuación se muestra una matriz con 3 filas y cada fila tiene 4 columnas.

a = [3][4]int{  
   {0, 1, 2, 3} ,   /*  initializers for row indexed by 0 */
   {4, 5, 6, 7} ,   /*  initializers for row indexed by 1 */
   {8, 9, 10, 11}   /*  initializers for row indexed by 2 */
}

Acceso a elementos de matriz bidimensionales

Se accede a un elemento en una matriz bidimensional utilizando los subíndices, es decir, el índice de fila y el índice de columna de la matriz. Por ejemplo

int val = a[2][3]

La declaración anterior tomará el cuarto elemento de la tercera fila de la matriz. Puedes verificarlo en el diagrama anterior. Veamos el programa a continuación donde hemos usado un bucle anidado para manejar una matriz bidimensional

package main

import "fmt"

func main() {
   /* an array with 5 rows and 2 columns*/
   var a = [5][2]int{ {0,0}, {1,2}, {2,4}, {3,6},{4,8}}
   var i, j int

   /* output each array element's value */
   for  i = 0; i < 5; i++ {
      for j = 0; j < 2; j++ {
         fmt.Printf("a[%d][%d] = %d\n", i,j, a[i][j] )
      }
   }
}

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

a[0][0]: 0
a[0][1]: 0
a[1][0]: 1
a[1][1]: 2
a[2][0]: 2
a[2][1]: 4
a[3][0]: 3
a[3][1]: 6
a[4][0]: 4
a[4][1]: 8

Como se explicó anteriormente, puede tener matrices con cualquier número de dimensiones, aunque es probable que la mayoría de las matrices que cree sean de una o dos dimensiones.