Operatori di Assegnazione in Go
Gli operatori di assegnazione in Go permettono di assegnare valori alle variabili e di combinare l’assegnazione con operazioni aritmetiche o bitwise.
Operatore di Assegnazione Base
L’operatore = assegna un valore a una variabile già dichiarata:
var x int
x = 10
var nome string
nome = "Go"
Dichiarazione Breve (:=)
L’operatore := dichiara e assegna una variabile in un solo passaggio. Può essere usato solo all’interno di funzioni:
func main() {
x := 10 // int
nome := "Go" // string
attivo := true // bool
pi := 3.14 // float64
}
Operatori di Assegnazione Composti
Questi operatori combinano un’operazione con l’assegnazione:
| Operatore | Equivalente | Descrizione |
|---|---|---|
+= |
x = x + y |
Addizione e assegnazione |
-= |
x = x - y |
Sottrazione e assegnazione |
*= |
x = x * y |
Moltiplicazione e assegnazione |
/= |
x = x / y |
Divisione e assegnazione |
%= |
x = x % y |
Modulo e assegnazione |
func main() {
x := 10
x += 5 // x = 15
x -= 3 // x = 12
x *= 2 // x = 24
x /= 4 // x = 6
x %= 4 // x = 2
fmt.Println(x) // 2
}
Operatori di Assegnazione Bitwise
| Operatore | Equivalente | Descrizione |
|---|---|---|
&= |
x = x & y |
AND bitwise e assegnazione |
|= |
x = x | y |
OR bitwise e assegnazione |
^= |
x = x ^ y |
XOR bitwise e assegnazione |
<<= |
x = x << y |
Shift sinistro e assegnazione |
>>= |
x = x >> y |
Shift destro e assegnazione |
func main() {
x := 12 // binario: 1100
x &= 10 // 1100 & 1010 = 1000 → x = 8
x |= 3 // 1000 | 0011 = 1011 → x = 11
x ^= 5 // 1011 ^ 0101 = 1110 → x = 14
x <<= 1 // 1110 << 1 = 11100 → x = 28
x >>= 2 // 11100 >> 2 = 111 → x = 7
}
Assegnazione Multipla
Go permette di assegnare piĂą variabili sulla stessa riga:
func main() {
a, b, c := 1, 2, 3
// Swap di variabili senza variabile temporanea
a, b = b, a
fmt.Println(a, b) // 2 1
}
Assegnazione con Valori di Ritorno
valore, errore := strconv.Atoi("42")
if errore != nil {
fmt.Println("Errore:", errore)
}
// Ignora un valore con _
_, err := fmt.Println("ciao")
Conclusione
Go offre un set completo di operatori di assegnazione che rendono il codice conciso e leggibile. La distinzione tra = (assegnazione) e := (dichiarazione breve) è una delle caratteristiche più importanti da padroneggiare per scrivere codice Go idiomatico.