¿Por qué se requiere time.sleep para ejecutar ciertos goroutines?

En el tutorial de GO, tenemos esta diapositiva:Goroutines

package main

import (
    "fmt"
    "time"
)

func say(s string) {
    for i := 0; i < 5; i++ {
        time.Sleep(100 * time.Millisecond)
        fmt.Println(s)
    }
}

func main() {
    go say("world")
    say("hello")
}

La ejecución de este código produce los resultados esperados ("mundo" y "hola" escritos en la pantalla de manera intercambiable 5 veces).

Sin embargo, si comentamostime.Sleep (y en consecuencia, la"time" línea de la importación) y ejecutar el programa de nuevo, nos quedamos consolamente "Hola" escrito en la pantalla cinco veces.

¿Qué es tan importante acerca detime.Sleep ¿Que salva al goroutine de morir?

Respuestas a la pregunta(3)

Su respuesta a la pregunta