Sobes.tech
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)
    }
}