Longitud vs Capacidad
Podemos determinar la longitud de un array o de un slice utilizando la función len
:
index.go
12345randomNumbers := [] int { 1, 4, 5, 7, 9, 10, 12 } fmt.Println(len(randomNumbers)) // Output: 7 numbersSlice := randomNumbers[2:7] fmt.Println(len(numbersSlice)) // Output: 5
Podemos determinar la capacidad de un array o de un slice utilizando la función cap
:
randomNumbers := [] int { 1, 4, 5, 7, 9, 10, 12 }
fmt.Println(cap(randomNumbers)) // Salida: 7
numbersSlice := númerosaleatorios[2:7]
fmt.Println(cap(trozoNumeros)) // Salida: 5
La longitud y la capacidad de una matriz son siempre iguales. Sin embargo, para una porción, la capacidad puede diferir de la longitud. Por ejemplo, en el caso de que se cree una porción a partir de una matriz, la capacidad es mayor que la longitud:
index.go
1234randomNumbers := [7] int { 1, 4, 5, 7, 9, 10, 12 } numbersSlice := randomNumbers[1:3] fmt.Println(len(numbersSlice)) // Output: 2 fmt.Println(cap(numbersSlice)) // Output: 6
La capacidad de una porción es el número de elementos desde el índiceinicial
de la porción hasta el final de la matriz original a partir de la cual se creó. En el ejemplo anterior, es 6
.
Recuerde que al modificar una porción también se modifica la matriz original. Por lo tanto, en el ejemplo dado, añadir un elemento (o valor) a una porción esencialmente actualiza el elemento próximo al índice final de la porción en la matriz original. En otras palabras, aumenta el tamaño de la porción y actualiza los elementos de la matriz original basándose en los elementos/valores añadidos. Esto quedará más claro con un ejemplo:
index.go
12345randomNumbers := [7] int { 1, 4, 5, 7, 9, 10, 12 } numbersSlice := randomNumbers[1:3] fmt.Println(randomNumbers) // Output: [1 4 5 7 9 10 12] numbersSlice = append(numbersSlice, 20, 30, 40) fmt.Println(randomNumbers) // Output: [1 4 5 20 30 40 12]
La capacidad es útil para determinar cuántos elementos podemos añadir a la porción. Si excedemos la capacidad de la porción, la función append
crea y devuelve una nueva porción que no está conectada a ninguna porción del array original. Por lo tanto, se separa del array original.
Puedes ver el siguiente ejemplo: el array original permanece inalterado aunque hayamos añadido más elementos a su porción:
index.go
12345678numbers := [] int { 1, 2, 3, 4 } numSlice := numbers[1:3] fmt.Println(numbers) // Outputs: [1 2 3 4] fmt.Println(numSlice) // Outputs: [2 3] fmt.Println(cap(numSlice)) // Outputs: 3 numSlice = append(numSlice, 9, 10) fmt.Println(numSlice) // Outputs: [2 3 9 10] fmt.Println(numbers) // Outputs: [1 2 3 4]
Esto ocurría porque el slice tenía una capacidad de 3, que excedíamos. Como resultado, la función append
devolvía una nueva porción que ya no hacía referencia al array original.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 1.96
Longitud vs Capacidad
Desliza para mostrar el menú
Podemos determinar la longitud de un array o de un slice utilizando la función len
:
index.go
12345randomNumbers := [] int { 1, 4, 5, 7, 9, 10, 12 } fmt.Println(len(randomNumbers)) // Output: 7 numbersSlice := randomNumbers[2:7] fmt.Println(len(numbersSlice)) // Output: 5
Podemos determinar la capacidad de un array o de un slice utilizando la función cap
:
randomNumbers := [] int { 1, 4, 5, 7, 9, 10, 12 }
fmt.Println(cap(randomNumbers)) // Salida: 7
numbersSlice := númerosaleatorios[2:7]
fmt.Println(cap(trozoNumeros)) // Salida: 5
La longitud y la capacidad de una matriz son siempre iguales. Sin embargo, para una porción, la capacidad puede diferir de la longitud. Por ejemplo, en el caso de que se cree una porción a partir de una matriz, la capacidad es mayor que la longitud:
index.go
1234randomNumbers := [7] int { 1, 4, 5, 7, 9, 10, 12 } numbersSlice := randomNumbers[1:3] fmt.Println(len(numbersSlice)) // Output: 2 fmt.Println(cap(numbersSlice)) // Output: 6
La capacidad de una porción es el número de elementos desde el índiceinicial
de la porción hasta el final de la matriz original a partir de la cual se creó. En el ejemplo anterior, es 6
.
Recuerde que al modificar una porción también se modifica la matriz original. Por lo tanto, en el ejemplo dado, añadir un elemento (o valor) a una porción esencialmente actualiza el elemento próximo al índice final de la porción en la matriz original. En otras palabras, aumenta el tamaño de la porción y actualiza los elementos de la matriz original basándose en los elementos/valores añadidos. Esto quedará más claro con un ejemplo:
index.go
12345randomNumbers := [7] int { 1, 4, 5, 7, 9, 10, 12 } numbersSlice := randomNumbers[1:3] fmt.Println(randomNumbers) // Output: [1 4 5 7 9 10 12] numbersSlice = append(numbersSlice, 20, 30, 40) fmt.Println(randomNumbers) // Output: [1 4 5 20 30 40 12]
La capacidad es útil para determinar cuántos elementos podemos añadir a la porción. Si excedemos la capacidad de la porción, la función append
crea y devuelve una nueva porción que no está conectada a ninguna porción del array original. Por lo tanto, se separa del array original.
Puedes ver el siguiente ejemplo: el array original permanece inalterado aunque hayamos añadido más elementos a su porción:
index.go
12345678numbers := [] int { 1, 2, 3, 4 } numSlice := numbers[1:3] fmt.Println(numbers) // Outputs: [1 2 3 4] fmt.Println(numSlice) // Outputs: [2 3] fmt.Println(cap(numSlice)) // Outputs: 3 numSlice = append(numSlice, 9, 10) fmt.Println(numSlice) // Outputs: [2 3 9 10] fmt.Println(numbers) // Outputs: [1 2 3 4]
Esto ocurría porque el slice tenía una capacidad de 3, que excedíamos. Como resultado, la función append
devolvía una nueva porción que ya no hacía referencia al array original.
¡Gracias por tus comentarios!