• 08/09/2024 2:12 AM

Arreglos(Arrays)

porJesus Flores

Ago 23, 2021

En este post hablaremos de un elemento importante en la programación , un elemento que nos sirve para almacenar múltiples valores en una sola variable, sí en este post hablaremos de los arrays.

Un array no es mas que estructura de datos compuesta por una colección de elementos del mismo tipo, con la capacidad de almacenar mas de un valor a la vez. Los valores que contiene el array se denominan elementos. Algo importante de los arrays es que contienen un número específico de elementos y no puede crecer ni reducirse. Los arreglos nos permiten manejar diferentes tipos de datos como elementos( Int, String, Boolean, etc…). El índice del primer elemento sin importar su dimensión es 0, el índice del segundo elemento de cualquier dimensión será 1, y así sucesivamente.

Veamos ahora como se declara un array en golan:

package main

import (
	"fmt"
	"reflect"
)

func main() {
	//declaramos un array de tipo int de 5 elementos
	var arrayEntero [5]int
	//declaramos un array de tipo cadena de 5 elementos
	var arrayCadena [5]string

	//solo usamos el paquete reflect para imprimir el tipo
	fmt.Println(reflect.ValueOf(arrayEntero).Kind())
	fmt.Println(reflect.ValueOf(arrayCadena).Kind())
}

salida:
array
array

Ahora veamos como asignar y acceder a los valores del array

Para asignar o acceder a los valores de los elementos de un array, simplemente basta con indicar el número del índice, el índice se indica entre corchetes:

package main

import "fmt"

func main() {
	var avengers [3]string
	avengers[0] = "ironman"         // asignamos un valor al primer elemento
	avengers[1] = "capitan america" // asignamos un valor al segundo elemento
	avengers[2] = "viuda negra"     // asignamos un valor al tercer elemento

	fmt.Println(avengers[0]) // accedemos al primer elemento
	fmt.Println(avengers[1]) // accedemos al segundo elemento
	fmt.Println(avengers[2]) // accedemos al tercer elemento
}

salida:
ironman
capitan america
viuda negra

Recorrer un array

Es posible recorrer los elementos de un array mediante un ciclo for de diferentes maneras, a continuación veamos las diferentes maneras:

package main

import "fmt"

func main() {
	arregloEntero := [5]int{20, 40, 60, 80, 100}

	//iteramos de la manera tradicional incrementando el indice
	fmt.Println("\n---------------ejemplo 1--------------------\n")
	for i := 0; i < len(arregloEntero); i++ {
		fmt.Println(arregloEntero[i])
	}

	//usando el range podemos obtener el indice y el valor del elemento
	fmt.Println("\n---------------ejemplo 2--------------------\n")
	for indice, elemento := range arregloEntero {
		fmt.Println(indice, "=>", elemento)

	}

	// es lo mismo del anterior, solo que usando _ ignoramos el valor del indice
	fmt.Println("\n---------------ejemplo 3--------------------\n")
	for _, valor := range arregloEntero {
		fmt.Println(valor)
	}

	//iteramos de una manera a un ciclo while,
	//donde incrementamos el valor del índice manualmente
	x := 0
	fmt.Println("\n---------------Example 4--------------------\n")
	for range arregloEntero {
		fmt.Println(arregloEntero[x])
		x++
	}
}

Copiar un array

Es posible crear una copia del arreglo, asignando el arreglo a una nueva variable mediante referencia o valor.

package main

import "fmt"

func main() {

	ligaDeLaJusticia := [3]string{"Batman", "Superman", "Wonder Woman"}
	copiaPorValor := ligaDeLaJusticia       // los datos son pasados por valor
	copiaPorReferencia := &ligaDeLaJusticia // los datos son pasados por referencia

	fmt.Printf("arreglo original: %v\n", ligaDeLaJusticia)
	fmt.Printf("copia por valor: %v\n", copiaPorValor)

	ligaDeLaJusticia[0] = "Aquaman"

	fmt.Printf("ligaDeLaJusticia: %v\n", ligaDeLaJusticia)
	fmt.Printf("copia por valor: %v\n", copiaPorValor)
	fmt.Printf("*copia por referencia: %v\n", *copiaPorReferencia)
}

Importante: Notemos que sucede cuando trabajamos por referencia y modificamos un valor en el array original, el valor también será modificado en el array copia cuando haya sido copiado por referencia.

por Jesus Flores

Ingeniero de Software y Agile Coach

Deja un comentario

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