3

この例は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だけが表示されるのはなぜですか?45


編集:答えはgolangの仕様から引用できます:

プログラムの実行は、メイン パッケージを初期化し、関数 main を呼び出すことによって開始されます。関数 main が戻ると、プログラムは終了します。他の (メインではない) ゴルーチンが完了するのを待ちません。

4

3 に答える 3