¿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?