私は数日前にgo言語を学び始めました。楽しいコードを書き始めようとしたとき、奇妙な動作に行き詰まりました。
package main
import "fmt"
func recv(value int) {
if value < 0 {
return
}
fmt.Println(value)
go recv(value-1)
}
func main() {
recv(10)
}
上記のコードを実行すると、のみ10
が出力されます。へgo
の呼び出しの前に を削除するとrecv
、が出力されます。ここで go ルーチンを誤用していると思いますが、なぜこの方法で go ルーチンを開始できなかったのか理解できません。10
0