Вопрос: Как работают каналы (chan) и чем отличается буферизированный от небуферизированного?
Go
Junior
Без компании
Вопрос: Как работают каналы (chan) и чем отличается буферизированный от небуферизированного?
Ответы
Небуферизированный канал синхронизирует отправителя и получателя (send блокируется до receive). Буферизированный имеет очередь до cap.
```go
package main
import (
"fmt"
"time"
)
func main() {
ch := make(chan int) // unbuffered
go func() {
ch <- 1
}()
fmt.Println(<-ch)
buf := make(chan int, 2)
buf <- 10
buf <- 20
fmt.Println(<-buf)
fmt.Println(<-buf)
time.Sleep(10 * time.Millisecond)
}
```