Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Lunghezza vs Capacità | Array e Slice
Introduzione a Golang

bookLunghezza vs Capacità

Possiamo determinare la lunghezza di un array o di uno slice utilizzando la funzione len:

index.go

index.go

copy
12345
randomNumbers := [] int { 1, 4, 5, 7, 9, 10, 12 } fmt.Println(len(randomNumbers)) // Output: 7 numbersSlice := randomNumbers[2:7] fmt.Println(len(numbersSlice)) // Output: 5

Possiamo determinare la capacità di un array o di uno slice utilizzando la funzione cap:

randomNumbers := [] int { 1, 4, 5, 7, 9, 10, 12 }
fmt.Println(cap(randomNumbers)) // Output: 7

numbersSlice := randomNumbers[2:7]
fmt.Println(cap(numbersSlice)) // Output: 5

La lunghezza e la capacità di un array sono sempre uguali. Tuttavia, per uno slice, la capacità può differire dalla lunghezza. Ad esempio, nel caso in cui uno slice venga creato da un array, la capacità è maggiore della lunghezza:

index.go

index.go

copy
1234
randomNumbers := [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 capacità di uno slice è il numero di elementi dall'startingIndex dello slice fino alla fine dell'array originale da cui è stato creato. Nell'esempio sopra, è 6.

Ricorda che modificare uno slice modifica anche l'array originale. Pertanto, nell'esempio fornito, aggiungere un elemento (o valore) a uno slice aggiorna essenzialmente l'elemento successivo all'indice finale dello slice nell'array originale. In altre parole, aumenta la dimensione dello slice e aggiorna gli elementi dell'array originale in base agli elementi/valori aggiunti. Questo sarà più chiaro con un esempio:

index.go

index.go

copy
12345
randomNumbers := [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 capacità è utile per determinare quanti elementi possiamo aggiungere allo slice. Se superiamo la capacità dello slice, la funzione append crea e restituisce un nuovo slice che non è collegato a una porzione dell'array originale. Pertanto, esso diventa separato dall'array originale.

Puoi vedere il seguente esempio: l'array originale rimane invariato anche se abbiamo aggiunto più elementi al suo slice:

index.go

index.go

copy
12345678
numbers := [] 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]

Questo è successo perché lo slice aveva una capacità di 3, che abbiamo superato. Di conseguenza, la funzione append ha restituito un nuovo slice che non fa più riferimento all'array originale.

question mark

Qual è la sintassi corretta per aggiungere un elemento z a uno slice chiamato alphabets?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 5. Capitolo 4

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Suggested prompts:

Can you explain more about how the `append` function works with slices?

What happens if I modify a slice after exceeding its capacity?

Can you provide an example showing the difference between modifying a slice within its capacity and after exceeding it?

Awesome!

Completion rate improved to 1.96

bookLunghezza vs Capacità

Scorri per mostrare il menu

Possiamo determinare la lunghezza di un array o di uno slice utilizzando la funzione len:

index.go

index.go

copy
12345
randomNumbers := [] int { 1, 4, 5, 7, 9, 10, 12 } fmt.Println(len(randomNumbers)) // Output: 7 numbersSlice := randomNumbers[2:7] fmt.Println(len(numbersSlice)) // Output: 5

Possiamo determinare la capacità di un array o di uno slice utilizzando la funzione cap:

randomNumbers := [] int { 1, 4, 5, 7, 9, 10, 12 }
fmt.Println(cap(randomNumbers)) // Output: 7

numbersSlice := randomNumbers[2:7]
fmt.Println(cap(numbersSlice)) // Output: 5

La lunghezza e la capacità di un array sono sempre uguali. Tuttavia, per uno slice, la capacità può differire dalla lunghezza. Ad esempio, nel caso in cui uno slice venga creato da un array, la capacità è maggiore della lunghezza:

index.go

index.go

copy
1234
randomNumbers := [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 capacità di uno slice è il numero di elementi dall'startingIndex dello slice fino alla fine dell'array originale da cui è stato creato. Nell'esempio sopra, è 6.

Ricorda che modificare uno slice modifica anche l'array originale. Pertanto, nell'esempio fornito, aggiungere un elemento (o valore) a uno slice aggiorna essenzialmente l'elemento successivo all'indice finale dello slice nell'array originale. In altre parole, aumenta la dimensione dello slice e aggiorna gli elementi dell'array originale in base agli elementi/valori aggiunti. Questo sarà più chiaro con un esempio:

index.go

index.go

copy
12345
randomNumbers := [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 capacità è utile per determinare quanti elementi possiamo aggiungere allo slice. Se superiamo la capacità dello slice, la funzione append crea e restituisce un nuovo slice che non è collegato a una porzione dell'array originale. Pertanto, esso diventa separato dall'array originale.

Puoi vedere il seguente esempio: l'array originale rimane invariato anche se abbiamo aggiunto più elementi al suo slice:

index.go

index.go

copy
12345678
numbers := [] 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]

Questo è successo perché lo slice aveva una capacità di 3, che abbiamo superato. Di conseguenza, la funzione append ha restituito un nuovo slice che non fa più riferimento all'array originale.

question mark

Qual è la sintassi corretta per aggiungere un elemento z a uno slice chiamato alphabets?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 5. Capitolo 4
some-alt