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.