Por padrão canais são unbuffered, ou seja, apenas
aceitam envios (chan <- ) se há um recebimento
correspondente (<- chan ) pronto para receber.
Canais Buffered aceitam um número limitado de valores
sem um recebimento correspondente.
|
|
|

package main
|
|
import "fmt"
|
|
func main() {
|
Aqui é criado um canal de strings que armazena até
dois valores, ou seja, trata-se de um canal buffered.
|
messages := make(chan string, 2)
|
Por ser buffered é possível enviar valores para o
canal, sem ter um recebimento correspondente.
|
messages <- "buffered"
messages <- "channel"
|
Posteriormente os valores são recebidos normalmente.
|
fmt.Println(<-messages)
fmt.Println(<-messages)
}
|