Каналы могут быть буферизированными. Чтобы инициализировать буферизированный канал, передайте в make вторым параметром размер буфера:
ch := make(chan int, 100)
Отправка в буферизованный канал блокируется, только если буфер полон. Получение блокируется, когда буфер пуст.
package main
import "fmt"
func main() {
ch := make(chan int, 2)
ch <- 1
ch <- 2
fmt.Println(<-ch)
fmt.Println(<-ch)
}
Вывод:
1
2
Читайте также:
- Основы языка Go: Go-процедуры (goroutines)
- Основы языка Go: каналы
- Основы языка Go: методы, получатели и указатели
Комментариев нет:
Отправить комментарий