1 Panoramica degli Operatori in Golang

Nel linguaggio Go, gli operatori vengono utilizzati per eseguire le operazioni del codice del programma, tra cui operazioni aritmetiche, confronti relazionali, operazioni logiche e altro. Operatori diversi corrispondono a funzionalità e scenari d'uso differenti. Comprendere e padroneggiare questi operatori è fondamentale per una programmazione efficace.

2 Operatori Aritmetici

Il linguaggio Go fornisce un insieme di operatori aritmetici:

  • Addizione (+): Operazione di addizione
  • Sottrazione (-): Operazione di sottrazione
  • Moltiplicazione (*): Operazione di moltiplicazione
  • Divisione (/): Operazione di divisione
  • Resto (%): Operazione modulo

Esempi:

package main

import "fmt"

func main() {
    // Operazione di addizione
    sum := 10 + 5
    fmt.Println("10 + 5 =", sum) // Stampa 15

    // Operazione di sottrazione
    diff := 10 - 5
    fmt.Println("10 - 5 =", diff) // Stampa 5

    // Operazione di moltiplicazione
    prod := 10 * 5
    fmt.Println("10 * 5 =", prod) // Stampa 50

    // Operazione di divisione
    quot := 10 / 5
    fmt.Println("10 / 5 =", quot) // Stampa 2

    // Operazione modulo
    rem := 10 % 5
    fmt.Println("10 % 5 =", rem) // Stampa 0
}

3 Operatori Logici

Gli operatori logici nel linguaggio Go sono utilizzati per collegare più condizioni (generalmente utilizzate per valori booleani). Comprendono tre tipi: AND (&&), OR (||) e NOT (!).

3.1 AND (&&)

Quando tutte le condizioni sono vere, il risultato dell'operazione "AND" è vero.

Esempi:

package main

import "fmt"

func main() {
    fmt.Println(true && true)   // Stampa vero
    fmt.Println(true && false)  // Stampa falso
    fmt.Println(false && false) // Stampa falso
    // Il risultato è vero solo quando entrambe le condizioni sono vere
}

3.2 OR (||)

Se almeno una condizione è vera, il risultato dell'operazione "OR" è vero.

Esempi:

package main

import "fmt"

func main() {
    fmt.Println(true || true)   // Stampa vero
    fmt.Println(true || false)  // Stampa vero
    fmt.Println(false || false) // Stampa falso
    // Il risultato è vero se almeno una condizione è vera
}

3.3 NOT (!)

Utilizzato per invertire il valore booleano di una condizione.

Esempi:

package main

import "fmt"

func main() {
    fmt.Println(!true)  // Stampa falso
    fmt.Println(!false) // Stampa vero
    // Inverte il valore booleano
}

4 Operatori di Confronto

Gli operatori di confronto nel linguaggio Go sono utilizzati per confrontare due variabili o valori:

  • Uguale a (==)
  • Diverso da (!=)
  • Maggiore di (>)
  • Minore di (<)
  • Maggiore o uguale a (>=)
  • Minore o uguale a (<=)

Il risultato delle operazioni di confronto è un valore booleano: true o false.

5 Operatori Bitwise

In Go, gli operatori bitwise ci permettono di manipolare direttamente i bit binari dei dati:

  • Bitwise AND (&)
  • Bitwise OR (|)
  • Bitwise XOR (^)
  • Spostamento bitwise a sinistra (<<)
  • Spostamento bitwise a destra (>>)

Gli operatori bitwise sono principalmente utilizzati nella programmazione a basso livello, come operazioni dirette sull'hardware, crittografia e altri scenari.

6 Operatori di Assegnamento

Gli operatori di assegnamento sono utilizzati per assegnare valori alle variabili. Nel linguaggio Go, ci sono diverse forme di operatori di assegnamento:

  • Assegnazione semplice (=)
  • Assegnazione di aggiunta (+=)
  • Assegnazione di sottrazione (-=)
  • Assegnazione di moltiplicazione (*=)
  • Assegnazione di divisione (/=)
  • Assegnazione di modulo (%=)

Questi operatori rendono il codice più conciso. Ad esempio, x += 1 è equivalente a x = x + 1.

7 Operatori Speciali

7.1 Operatori Incremento (++) e Decremento (--)

L'operatore di incremento (++) e l'operatore di decremento (--) vengono utilizzati per aggiungere 1 e sottrarre 1 al valore di una variabile, rispettivamente. Sono gli unici operatori nel linguaggio Go che possono agire direttamente sulla variabile stessa (non su un'espressione).

package main

import "fmt"

func main() {
    x := 1
    x++
    fmt.Println("x++ =", x) // Stampa 2

    y := 10
    y--
    fmt.Println("y-- =", y) // Stampa 9
}

Si noti che nel linguaggio Go, x++ o x-- non possono fare parte di un'espressione. Ad esempio, z := x++ non è consentito.

7.2 Conversione di tipo

Il linguaggio Go è staticamente tipizzato, il che significa che una volta dichiarata una variabile, il suo tipo non può essere modificato. Pertanto, a volte è necessario convertire una variabile da un tipo a un altro. Go non ha conversioni di tipo automatiche; è richiesta la conversione esplicita del tipo.

Esempio:

package main

import (
	"fmt"
)

func main() {
	var i int = 42
	fmt.Println(float64(i)) // Converti int in float64

	var f float64 = 3.14
	fmt.Println(int(f)) // Converti float64 in int, la parte decimale verrà scartata
}

Quando si esegue la conversione di tipo, è importante assicurarsi che i dati siano sicuri durante il processo di conversione, ad esempio la possibile perdita di precisione durante la conversione di un numero in virgola mobile in un intero.