我開始學習去語言天。當我嘗試開始編寫一些有趣的代碼時,我被一個奇怪的行爲卡住了。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 {}'。一個空的結構不會佔用內存,同時仍然允許所需的行爲。而布爾值佔用一個字節。 – jimt
是的,說實話我是爲了讓布爾變得更復雜。但是,一個空的結構在技術上更好。你想將其納入我的答案或我自己編輯它? :) –
這是你的答案,去吧:) – jimt