GO チュートリアルには、次のスライドがあります。
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")
}
このコードを実行すると、期待どおりの結果が得られます (「world」と「hello」が交互に 5 回画面に表示されます)。
ただし、コメントアウトtime.Sleep
(およびその結果、"time"
インポートの行) を実行してプログラムを再度実行すると、画面に「hello」が 5 回書き込まれるだけです。
time.Sleep
ゴルーチンを死なせないために重要なことは何ですか?