Middle+
Cos'è un canale in Go? A cosa servono i canali?
sobes.tech AI
Risposta dell'AI
In Go, un canale (channel) è un meccanismo per trasmettere dati tra goroutine (thread leggeri). I canali forniscono una comunicazione sicura e sincronizzata, permettendo alle goroutine di scambiarsi valori senza usare variabili condivise o blocchi.
I canali vengono dichiarati specificando il tipo di dati trasmessi, ad esempio:
ch := make(chan int) // canale per trasmettere numeri interi
Operazioni principali sui canali:
- Inviare un valore:
ch <- value - Ricevere un valore:
value := <-ch
I canali sono usati per:
- Sincronizzare le goroutine
- Trasmettere dati tra goroutine
- Organizzare pipeline di elaborazione dati
Esempio:
package main
import (
"fmt"
"time"
)
func worker(ch chan int) {
for val := range ch {
fmt.Println("Ricevuto:", val)
}
}
func main() {
ch := make(chan int)
go worker(ch)
for i := 0; i < 5; i++ {
ch <- i
}
close(ch) // chiudiamo il canale affinché il worker termini
time.Sleep(time.Second)
}
In questo esempio, il canale viene usato per trasmettere numeri dalla goroutine principale al worker, che li stampa.