Как ведет себя неинициализированный канал?

У меня есть структура, которая содержит канал, который не инициализирован.

Когда я пишу в него, процедура блокируется, как и ожидалось, но читатель никогда не уведомляется, что что-то находится в канале.

Я удивлен, что нет ошибки, и мне интересно, что делает Go.

В приведенном ниже примере ни сообщениеpushed ниgot it напечатаны. (Раскомментируйте инициализацию, и она будет работать как шарм)

type MyStruct struct {
    over chan bool
}

func main() {
    nonInitialized := &MyStruct{}
    // nonInitialized.over = make(chan bool)
    go func() {
        for i := 0; i < 10; i++ {
            select {
            case <-nonInitialized.over:
                fmt.Println("got it")
            default:
                // proceed
            }
            fmt.Println("do some stuff")
            time.Sleep(10 * time.Millisecond)
        }
        panic("took too long")
    }()
    // push on the non initialized channel
    fmt.Println("pushing")
    nonInitialized.over <- true
    fmt.Println("pushed")
}

Вот детская площадкаhttps://play.golang.org/p/76zrCuoeoh

(Я знаю, что должен инициализировать канал, это не является целью вопроса, я хочу знать, что происходит в Go с неинициализированными каналами.)

Ответы на вопрос(2)

Ваш ответ на вопрос