私は数日前に言語を学び始めました。私はいくつかの楽しいコードを書くことを試みたとき、私は奇妙な動作で立ち往生しています。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
のみが出力されます。 recv
に電話する前にgo
を削除すると、10
〜0
が印刷されます。私はここに日課を悪用していると信じていますが、なぜこのようにルーチンが失敗するのか理解できません。
チャネルのデータタイプが重要でない信号チャネルの場合、 'chan struct {}'を使用できます。空の構造体はメモリを消費しませんが、依然として望ましい動作を可能にします。一方、ブール値は1バイトを占めます。 – jimt
ええ、正直言って、私はそれをもう複雑にしないためにブールに行きました。しかし、ええ、空の構造体は技術的に優れています。それを私の答えに取り入れたいのですか、自分で編集しますか? :) –
それはあなたの答えです。 – jimt