Arrays en el lenguaje Go

El lenguaje Go proporciona una estructura de datos de tipo array.

Un array es una secuencia de elementos de datos numerados de longitud fija con un mismo tipo único; este tipo puede ser cualquier tipo primitivo, como enteros, cadenas o tipos definidos por el usuario.

En comparación con declararnumber0, number1, ..., number99las variables, usar la forma de arraynumbers[0], numbers[1] ..., numbers[99]es más conveniente y fácil de expandir.

Los elementos de un array se pueden leer (o modificar) mediante un índice (posición). El índice comienza en 0: el primer elemento tiene índice 0, el segundo índice 1, y así sucesivamente.


Declarar arrays

La declaración de un array en Go requiere especificar el tipo de elemento y la cantidad de elementos. El formato de sintaxis es el siguiente:

var arrayName [size]dataType
Donde,arrayNamees el nombre del array,sizees el tamaño del array,dataTypees el tipo de dato de los elementos del array.

A continuación se define un array `balance` de longitud 10 y tipo `float32`:

var balance [10]float32

Inicializar arrays

Lo siguiente demuestra la inicialización de arrays:

El siguiente ejemplo declara un array de enteros llamado `numbers` de tamaño 5. Al declararlo, cada elemento del array se inicializa por defecto según su tipo de dato; para el tipo entero, el valor inicial es 0.

var numbers [5]int

También se puede usar una lista de inicialización para inicializar los elementos del array:

var numbers = [5]int{1, 2, 3, 4, 5}

El código anterior declara un array de enteros de tamaño 5 e inicializa sus elementos como 1, 2, 3, 4 y 5, respectivamente.

Además, también se puede usar:=la sintaxis de declaración corta para declarar e inicializar arrays:

numbers := [5]int{1, 2, 3, 4, 5}

El código anterior crea un array de enteros llamado `numbers`, establece su tamaño en 5 e inicializa los valores de los elementos.

Nota:En Go, el tamaño del array es parte del tipo, por lo que los arrays de diferentes tamaños son incompatibles. Es decir,[5]inty[10]intson tipos diferentes.

A continuación se define el array `balance` de longitud 5 y tipo `float32`, y se inicializan sus elementos:

var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

También podemos inicializar rápidamente un array mediante un literal al declararlo:

balance := [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

Si la longitud del array no está determinada, se puede usar...en lugar de la longitud del array; el compilador deducirá la longitud del array según el número de elementos:

var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
o 
balance := [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

Si se ha establecido la longitud del array, también podemos inicializar elementos especificando su índice:

//  将索引为 1 和 3 的元素初始化
balance := [5]float32{1:2.0,3:7.0}

En la inicialización del array,{}el número de elementos entre llaves no puede ser mayor que[]el número entre corchetes.

Si se omite[]el número entre corchetes y no se establece el tamaño del array, Go establecerá el tamaño del array según el número de elementos:

 balance[4] = 50.0

El ejemplo anterior leyó el quinto elemento. Los elementos del array se pueden leer (o modificar) mediante un índice (posición); el índice comienza en 0: el primer elemento tiene índice 0, el segundo índice 1, y así sucesivamente.


Acceder a los elementos del array

Los elementos del array se pueden leer mediante un índice (posición). El formato es: nombre del array seguido de corchetes, y dentro de los corchetes el valor del índice. Por ejemplo:

var salary float32 = balance[9]

El ejemplo anterior leyó el valor del décimo elemento del array `balance`.

A continuación se muestra un ejemplo de operaciones completas con arrays (declaración, asignación, acceso):

Ejemplo 1

package main

import "fmt"

func main() {
   var n [10]int /* n es un array de longitud 10 */
   var i,j int

   /* Inicializa los elementos del array n */        
   for i = 0; i < 10; i++ {
      n[i] = i + 100 /* Establece el elemento como i + 100 */
   }

   /* Muestra el valor de cada elemento del array */
   for j = 0; j < 10; j++ {
      fmt.Printf("Element[%d] = %d\n", j, n[j] )
   }
}

El resultado de ejecutar el ejemplo anterior es el siguiente:

Element[0] = 100
Element[1] = 101
Element[2] = 102
Element[3] = 103
Element[4] = 104
Element[5] = 105
Element[6] = 106
Element[7] = 107
Element[8] = 108
Element[9] = 109

Ejemplo 2

package main

import "fmt"

func main() {
   var i,j,k int
   // Declara e inicializa rápidamente el array
   balance := [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

   /* Muestra los elementos del array */         ...
   for i = 0; i < 5; i++ {
      fmt.Printf("balance[%d] = %f\n", i, balance[i] )
   }
   
   balance2 := [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
   /* Muestra el valor de cada elemento del array */
   for j = 0; j < 5; j++ {
      fmt.Printf("balance2[%d] = %f\n", j, balance2[j] )
   }

   // Inicializa los elementos con índice 1 y 3
   balance3 := [5]float32{1:2.0,3:7.0}  
   for k = 0; k < 5; k++ {
      fmt.Printf("balance3[%d] = %f\n", k, balance3[k] )
   }
}

El resultado de ejecutar el ejemplo anterior es el siguiente:

balance[0] = 1000.000000
balance[1] = 2.000000
balance[2] = 3.400000
balance[3] = 7.000000
balance[4] = 50.000000
balance2[0] = 1000.000000
balance2[1] = 2.000000
balance2[2] = 3.400000
balance2[3] = 7.000000
balance2[4] = 50.000000
balance3[0] = 0.000000
balance3[1] = 2.000000
balance3[2] = 0.000000
balance3[3] = 7.000000
balance3[4] = 0.000000

Más contenido

Los arrays son muy importantes para Go; a continuación presentaremos más contenido sobre los arrays:

Contenido Descripción
Arrays multidimensionales Go admite arrays multidimensionales; el más simple es el array bidimensional
Pasar arrays a funciones Puedes pasar parámetros de tipo array a funciones
Otras extensiones