Junior — Senior
51
Какой текст появится в консоли при запуске программы №67
Компании, где спрашивали:
Условие задачи
Вопрос: какой вывод будет получен после выполнения следующей Go‑программы? Обратите внимание на работу буферизированного канала, операции чтения, закрытия канала и конструкции select.
import (
"fmt"
)
func main() {
soundQueue := make(chan int, 1000)
soundQueue <- 1
soundQueue <- 2
soundQueue <- 3
soundQueue <- 4
soundQueue <- 5
value1, present1 := <-soundQueue
fmt.Println("%v %v \n", value1, present1)
close(soundQueue)
value2, present2 := <-soundQueue
fmt.Printf("%v %v \n", value2, present2)
select {
case _, ok := <-soundQueue:
if ok {
fmt.Println("close by ok 1")
close(soundQueue)
}
case _, ok := <-soundQueue:
if ok {
fmt.Println("close by ok 2")
close(soundQueue)
}
default:
fmt.Println("close by Default")
close(soundQueue)
}
}