Saltearse al contenido

Arreglos

Un arreglo es una colección de elementos del mismo tipo, accesibles mediante un índice. El tamaño de un arreglo es fijo y no puede cambiar durante la ejecución del programa.

Leer un elemento

Para acceder al valor de un elemento en un array podemos utilizar su indice.

package main
import "fmt"
func main() {
// Declaración de un arreglo.
nums := [5]int{1, 2, 3, 4, 5}
// Indice del elemento al que queremos acceder.
index := 3
// Imprimimos el número en la posición que indique el index.
fmt.Println("El número es:", nums[index])
}

Ejecuta el código en este playground.

Actualizar un elemento

Para actualizar un elemento en un arreglo podemos acceder a el a través de su indice y asignar el nuevo valor.

package main
import "fmt"
func main() {
// Declaración de un arreglo.
nums := [5]int{1, 2, 3, 4, 5}
// Actualizar el elemento accediendo con su indice.
nums[2] = 6
// Imprimimos el array de nums.
fmt.Println(nums)
}

Ejecuta el código en este playground.

Buscar un elemento

Para buscar un elemento en un arreglo, podemos utilizar un bucle for para recorrer todos los elementos del arreglo y compararlos con el elemento que estamos buscando (esto es lo que se conoce como búsqueda lineal).

package main
import "fmt"
func main() {
// Declaración de un arreglo.
nums := [5]int{1, 2, 3, 4, 5}
// Número que queremos buscar.
targetNum := 3
// Recorremos el arreglo.
for i := 0; i < len(nums); i++ {
// Comparamos el elemento actual con el número que queremos buscar.
if nums[i] == targetNum {
// Si el elemento actual es igual al número que queremos buscar,
// imprimimos un mensaje y salimos del bucle.
fmt.Println("El número", targetNum, "está en el arreglo")
break
}
}
}

Ejecuta el código en este playground.

Insertar un elemento al final

Para insertar un elemento al final de un slice, podemos utilizar la función nativa de Go append. La cuál recibe como primer argumento el slice y después el elemento a insertar en el slice.

package main
import "fmt"
func main() {
// Declaración del slice.
nums := []int{1, 2, 3, 4, 5}
// Número que queremos insertar al slice.
newNum := 6
// Usamos append para insertar el nuevo número.
nums = append(nums, newNum)
// Imprimimos el slice nums.
fmt.Println(nums)
}

Ejecuta el código en este playground.

Insertar un elemento al principio

Para este caso volveremos a usar la función append, pero en esta ocasión le pasaremos como primer argumento un slice que contendrá el nuevo elemento, seguido por el slice que contiene al resto de los elementos utilizando la sintaxis ....

package main
import "fmt"
func main() {
// Declaración del slice.
nums := []int{1, 2, 3, 4, 5}
// Número que queremos insertar al slice.
newNum := 6
// Usamos append para insertar el nuevo número al principio.
nums = append([]int{newNum}, nums...)
// Imprimimos el slice nums.
fmt.Println(nums)
}

Ejecuta el código en este playground.

Insertar un elemento en cualquier indice

Para insertar un elemento en cualquier indice, podemos dividir el slice en dos partes e insertar el nuevo elemento en medio de las mismas.

package main
import "fmt"
func main() {
// Declaración del slice.
nums := []int{1, 2, 3, 4, 5}
// Número que queremos insertar al slice.
newNum := 6
// Indice donde queremos insertar el elemento.
index := 2
// Dividir el slice en dos partes: antes y después del índice.
firstHalf := nums[:index]
secondHalf := nums[index:]
// Crear un nuevo slice combinando las dos partes.
newNums := append(firstHalf, append([]int{newNum}, secondHalf...)...)
// Imprimimos el slice newNums.
fmt.Println(newNums)
}

Ejecuta el código en este playground.

Eliminar un elemento

Para eliminar un elemento de un slice, podemos utilizar una técnica similar a la anterior, creando dos slices y dejando de lado el elemento que queremos eliminar.

package main
import (
"fmt"
)
func main() {
// Declaración del slice.
nums := []int{1, 2, 3, 4, 5}
// Indice del elemento que queremos eliminar.
index := 2
// Crear un nuevo slice combinando las dos partes.
newNums := append(nums[:index], nums[index+1:]...)
fmt.Println(newNums)
}

Ejecuta el código en este playground.