typestar

Slices: longitud y capacidad en Go

Un slice es una vista: puntero, longitud, capacidad — y append puede copiar o no.

func internals() (int, int, bool) {
    backing := make([]int, 0, 8)
    backing = append(backing, 1, 2, 3)

    shared := backing[:2]
    shared = append(shared, 99) // escribe en backing[2]
    aliased := backing[2] == 99

    capped := backing[:2:2]
    capped = append(capped, 7) // debe reservar: la capacidad está llena

    snapshot := make([]int, len(backing))
    copy(snapshot, backing)

    return len(backing), cap(backing), aliased && capped[2] == 7
}

Cómo funciona

  1. append reutiliza el arreglo de respaldo mientras la capacidad alcance.
  2. Un slice de tres índices limita la capacidad, así que append debe copiar.
  3. copy es la forma de tomar una instantánea real.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
16
Caracteres a escribir
424
Tokens
117
Ritmo de tres estrellas
90 tpm

Al ritmo de tres estrellas de 90 tokens por minuto, este intento toma unos 78 segundos.

Escribe este fragmento

Paso 3 de 9 en Arreglos, slices y mapas; paso 18 de 30 en Fundamentos del lenguaje.

← Anterior Siguiente →