Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
package main
import "fmt"
func main() {
ch := make(chan int, 1)
ch <- 7
close(ch)
for v := range ch {
fmt.Print(v)
}
}7
- Ждать deadlock:
closeсообщаетrange, что значений больше не будет, поэтому цикл заканчивается, прочитав7из буфера. - Ждать
0после7: приём из закрытого канала даёт нулевое значение, ноrangeне принимает его, а останавливается на закрытии.
- Что случится без
close(ch)? - Что даст
v, ok := <-chпосле цикла и почему?