亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

goroutine 語句執行和函數執行的不同行為

goroutine 語句執行和函數執行的不同行為

Go
千巷貓影 2023-07-26 13:40:42
誰能解釋以下關于 goroutine 的兩個調用之間的區別?方法一fmt.Println("Starting srv")go LOGGER.Error(srv.ListenAndServe())fmt.Println("Starting intSrv")go LOGGER.Error(intSrv.ListenAndServe())執行“Starting srv”后停止方法二go func() {    fmt.Println("Starting srv")    srv.ListenAndServe()}()go func() {    fmt.Println("Starting intSrv")    intSrv.ListenAndServe()}()這將執行“Starting srv”和“Starting intSrv”為什么行為不同?
查看完整描述

2 回答

?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

go LOGGER.Error(srv.ListenAndServe())

上面的語句首先計算參數LOGGER.Error(),然后創建一個 goroutine 并運行LOGGER.Error()。然而,srv.ListenAndServe一去不復返。


查看完整回答
反對 回復 2023-07-26
?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

Goroutine 函數參數在調用 Goroutine 中進行評估。

在以下聲明中:

go LOGGER.Error(srv.ListenAndServe())

srv.ListenAndServe()在啟動 goroutine 之前計算表達式以記錄錯誤。srv.ListenAndServe()直到服務器退出(因為服務器已停止或偵聽器遇到錯誤),調用才會返回。

使用此代碼啟動服務器并記錄從服務器返回的錯誤。

go func() { LOGGER.Error(srv.ListenAndServe()) }()


查看完整回答
反對 回復 2023-07-26
  • 2 回答
  • 0 關注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號