背景:
Go 程式是在Go 程式中並發執行的輕量級線程。當 Goroutine 建立時,它會執行指定的函數,並可能傳回一個值。
問題:
從 Goroutine 回傳值會發生什麼事?這些值可以在啟動 goroutine 的父例程中捕獲或使用嗎?
答案:
在提供的範例中, getNumber 函數的傳回值 i 為儲存在堆疊中。此行為表明 goroutine 維護自己的變數堆疊。
但是,儘管有這種存儲,但 goroutine 的返回值無法在 goroutine 本身之外檢索或使用。這是因為 goroutine 在自己獨特的堆疊中執行,這與主例程的堆疊不同。當 goroutine 完成時,它的堆疊將被銷毀,傳回值以及所有局部變數都會遺失。
結論:
外部無法存取 goroutine 的回傳值定義它們的 goroutine。因此,通常建議避免從 goroutine 傳回值,而是使用替代機制進行例程間通信,例如通道或共享記憶體。
以上是如何取得 Go Goroutine 的回傳值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!