Por que o canal da Go pode fechar duas vezes?

Quando eu faço algum código de práticas de go, encontro um problema em que um canal pode ser fechado duas vezes assim:

// jobs.go

package main

import (
   "fmt"
)

func main() {
    fmt.Println("Hello, playground")
    jobs := make(chan int, 5)
    done := make(chan bool)

    go func() {
        for {
            j,more := <-jobs

            fmt.Println("receive close: ", j, more)
            done <- true   
        }
    }()

    close(jobs)
    <- done
}

Resultado:

~ go run jobs.go
Hello, playground
receive close:  0 false
receive close:  0 false

Mas quando fecho o canal duas vezes manualmente, recebipanic: close of closed channel.

Por que o código acima pode receber fechar duas vezes?

questionAnswers(3)

yourAnswerToTheQuestion