Відповідно до стандартних налаштувань, канали не буферизуються,
тобто вони є такими - що тільки прийматимуть повідомлення (chan <- )
якщо відповідний отримувач (<- chan ) готовий прийняти його.
Буферизовані канали приймуть обмежену кількість значень,
не чекаючи того щоб отримувач забрав повідомлення.
|
|
|
package main
|
|
import "fmt"
|
|
func main() {
|
Ось ми створюємо канал рядків, з буфером в 2 значення.
|
messages := make(chan string, 2)
|
Оскільки канал використовує буфер, ми можемо надіслати до нього
оці значення, без відповідного читання з іншого кінця
каналу.
|
messages <- "buffered"
messages <- "channel"
|
І ми можемо отримати ці значення коли нам заманеться.
|
fmt.Println(<-messages)
fmt.Println(<-messages)
}
|