Como um canal não inicializado se comporta?

Eu tenho uma estrutura que contém um canal que não foi inicializado.

Quando escrevo, a rotina está bloqueando conforme o esperado, mas o leitor nunca é notificado de que algo está no cano.

Estou surpreso que não haja erro e estou me perguntando o que está fazendo o Go.

No exemplo abaixo, nem a mensagempushed nemgot it são impressos. (Remova o comentário da inicialização e ela funcionará como um encanto)

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")
}

Aqui é o playgroundhttps://play.golang.org/p/76zrCuoeoh

(Eu sei que devo inicializar o canal, esse não é o objetivo da pergunta. Quero saber o que está acontecendo no Go with canais não inicializados.)

questionAnswers(2)

yourAnswerToTheQuestion