Go by Example - IT: Channel con Buffer

Per default i channel vengono creati senza buffer. Scrivere un valore in un channel (chan <-) sarà quindi bloccante non c’è nessun ricevitore in ascolto su quel channel (<- chan). I channel con buffer accettano un numero limitato di valori e non risultano essere bloccanti se nessuno sta ascoltando sul channel in questione

package main
import "fmt"
func main() {

Qui creiamo un channel di string (con make) con un buffer di dimensione 2.

    messages := make(chan string, 2)

Dato che questo channel è bufferizzato, possiamo inviare questi due valori sul channel senza che il processo si blocchi.

    messages <- "buffered"
    messages <- "channel"

Possiamo recuperare successivamente i valori ricevuti sul channel.

    fmt.Println(<-messages)
    fmt.Println(<-messages)
}
$ go run channel-buffering.go 
buffered
channel

Prossimo esempio: Sincronizzazione Dei Channel.