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])
}
Complejidad de tiempo: O(1)
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)
}
Complejidad de tiempo: O(1)
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
}
}
}
Complejidad de tiempo: O(N)
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)
}
Complejidad de tiempo: O(N)
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)
}
Complejidad de tiempo: O(N)
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)
}
Complejidad de tiempo: O(N)
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)
}
Complejidad de tiempo: O(N)