Goroutine 執行異常
使用者遇到了一個令人困惑的情況,他們的 goroutine 無法在 Go 程式中執行。儘管使用匿名函數創建了一個 goroutine 並將訊息發送到主函數內的通道,但「輸入 goroutine...」的預期輸出並不存在。
檢查提供的程式碼表明該 goroutine 確實是建立並將指標傳遞給訊息通道。但問題出在程序後續的執行流程。
缺少同步
最關鍵的問題是main函數和goroutine之間沒有同步。程式在列印「Done!」後結束,沒有提供任何機制讓 goroutine 繼續運作。
Go 允許 goroutine 與主程式並發執行。但是,如果 main 函數在 goroutine 完成任務之前退出,則 goroutine 將提前終止。
可能的解決方案
要解決此問題,程式必須實現同步機制確保 main 函數等待 goroutine 完成。這可以透過多種方法來實現:
進一步探索
Go 博客提供了一個優秀的了解Go 中並發的資源,可以在以下鏈接找到:[Go 博客:並發]( https://blog.golang.org/go-concurrency-patterns)。
以上是為什麼我的 Go 程式中的 Goroutine 沒有執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!