Vai al contenuto principale
Pubblicato il

Errori Comuni in Go

Condividi:

Introduzione

Sebbene Go sia noto per la sua semplicità ed efficienza, come ogni linguaggio di programmazione, ha delle peculiarità che possono essere fonte di errori per gli sviluppatori. In questo articolo, esploriamo alcuni di questi errori comuni per aiutarti a evitare le insidie nel tuo codice.

1. Non gestire gli errori restituiti

Un errore classico in Go è ignorare gli errori restituiti dalle funzioni.

res, _ := http.Get("https://api.esempio.com/data")

La cosa corretta sarebbe gestire l'errore, verificandolo:

res, err := http.Get("https://api.esempio.com/data")

if err != nil {
  log.Fatalf("Errore nel recupero dei dati: %v", err)
}

2. Uso errato dei pacchetti

Importare pacchetti non necessari o usare pacchetti non adatti al compito in questione sono errori comuni.

import (
  "fmt"
  "math/rand"
)

func main() {
  fmt.Println(rand.Intn(100))  // Potrebbe non essere così casuale come pensi!
}

3. Slice e le loro insidie

Una comprensione imprecisa di come funzionano le slice in Go può portare a comportamenti inattesi.

a := []int{1, 2, 3}
b := a[:2]
b[0] = 42
fmt.Println(a)  // [42, 2, 3]

In questo esempio, b è una slice di a, il che significa che condividono la stessa memoria. Modificando b, si modifica anche a.

4. Goroutine e chiusure

Quando si usano goroutine con i cicli, è comune incontrare comportamenti inattesi a causa dell'uso delle chiusure.

for i := 0; i < 3; i++ {
  go func() {
    fmt.Println(i)
  }()
}

L'output precedente può sorprendere, poiché può stampare lo stesso numero più volte.

Conclusione

Go è un linguaggio potente e intuitivo, ma, come tutti i linguaggi, ha le sue sfumature. Familiarizzando con questi errori comuni, sarai meglio preparato a scrivere codice Go più robusto ed efficace.

Happy coding!