Go by Example: Buffer dei Canali

Per default i canali sono non bufferizzati, il che significa che accetteranno invii (chan <-) solo se c’è una ricezione corrispondente (<- chan) pronta a ricevere il valore inviato. I canali bufferizzati accettano un numero limitato di valori senza un ricevente corrispondente per quei valori.

package main
import "fmt"
func main() {

Qui creiamo con make un canale di stringhe bufferizzando fino a 2 valori.

    messages := make(chan string, 2)

Poiché questo canale è bufferizzato, possiamo inviare questi valori nel canale senza una ricezione concorrente corrispondente.

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

Successivamente possiamo ricevere questi due valori come al solito.

    fmt.Println(<-messages)
    fmt.Println(<-messages)
}
$ go run buffer-dei-canali.go 
buffered
channel

Prossimo esempio: .