Middle+
Compito: Cosa mostrerà il codice? ```go package main import "fmt" func main() { a := []int{1, 2, 3, 4, 5} b := a[:2] b = append(b, 100) fmt.Println(a, b) } ```
sobes.tech AI
Risposta dell'AI
Codice:
package main
import "fmt"
func main() {
a := []int{1, 2, 3, 4, 5}
b := a[:2] // b fa riferimento ai primi due elementi di a: [1, 2]
b = append(b, 100) // aggiungiamo 100 alla slice b
fmt.Println(a, b)
}
Analisi:
- Inizialmente,
a= [1, 2, 3, 4, 5] b := a[:2]— la slicebcontiene [1, 2], e la sua capacità è 5 (da 0 alla fine dia)append(b, 100)aggiunge l’elemento 100 alla sliceb. Poiché la capacità dibpermette di espandersi senza allocare nuova memoria, l’elemento 100 viene scritto ina[2], modificando l’array originalea.
Dopo l’append:
adiventa [1, 2, 100, 4, 5]bdiventa [1, 2, 100]
Output:
[1 2 100 4 5] [1 2 100]
Cioè, l’elemento a[2] è cambiato da 3 a 100, poiché b e a condividono un array sottostante.