在 Go 中,defer 語句允許您延遲函數的執行,直到周圍的函數返回。但是,當嘗試使用 defer 列印函數的執行時間時,它可能會傳回 0。讓我們檢查一下此行為及其解決方案。
考慮以下程式碼片段:
即使休眠了一秒,延遲時間差計算總是印出 0。為什麼會發生這種情況?
出現這個問題是因為延遲函數的參數在函數延遲時進行評估。當延遲函數執行時,周圍的函數已經返回,並且 start 變數超出了範圍。
為了解決這個問題,我們可以建立一個捕獲 start 的當前值的閉包。修正後的程式碼如下:
將時序邏輯封裝在單獨的函數中也可以提高程式碼的複用性。
以上是為什麼在嘗試測量函數執行時間時,在 Go 中延遲時間差計算會回傳 0?的詳細內容。更多資訊請關注PHP中文網其他相關文章!