この例はtour.golang.org/#63から取得しました
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")
}
出力
hello
world
hello
world
hello
world
hello
world
hello
の代わりに 回world
だけが表示されるのはなぜですか?4
5
編集:答えはgolangの仕様から引用できます:
プログラムの実行は、メイン パッケージを初期化し、関数 main を呼び出すことによって開始されます。関数 main が戻ると、プログラムは終了します。他の (メインではない) ゴルーチンが完了するのを待ちません。