Sobes.tech
Junior — Middle

¿Cómo crear e inicializar correctamente las slices en Go?

sobes.tech AI

Respuesta de la IA

En Go, los slices son estructuras de datos dinámicas que representan una referencia a un array con una longitud y capacidad especificadas.

Se pueden crear e inicializar slices de varias maneras:

  1. Declaración de un slice sin inicialización (slice nulo):
var s []int // slice nulo, longitud y capacidad 0
  1. Inicialización de un slice usando un literal:
s := []int{1, 2, 3} // slice de longitud 3
  1. Creación de un slice usando la función make:
s := make([]int, 5) // slice de longitud 5, lleno de ceros
s2 := make([]int, 3, 10) // longitud 3, capacidad 10

La función make asigna un array en el backend y devuelve un slice que apunta a él.

  1. Creación de un slice a partir de un array:
arr := [5]int{1, 2, 3, 4, 5}
s := arr[1:4] // slice de elementos con índices 1,2,3

Es importante recordar que los slices son referencias a arrays, por lo que modificar los elementos del slice también modifica el array original.

Ejemplo de uso:

package main
import "fmt"

func main() {
    s := make([]int, 3, 5)
    fmt.Println(s)       // [0 0 0]
    fmt.Println(len(s))  // 3
    fmt.Println(cap(s))  // 5

    s = append(s, 4, 5)
    fmt.Println(s)       // [0 0 0 4 5]
    fmt.Println(len(s))  // 5
    fmt.Println(cap(s))  // 5
}

Este enfoque permite trabajar de manera eficiente con arreglos dinámicos en Go.