首頁 > 後端開發 > Golang > 主體

為什麼在嘗試測量函數執行時間時,在 Go 中延遲時間差計算會回傳 0?

Barbara Streisand
發布: 2024-11-17 08:52:03
原創
132 人瀏覽過

Why does deferring a time difference calculation in Go return 0 when attempting to measure function execution time?

測量 Go 中函數執行所花費的時間

在 Go 中,defer 語句允許您延遲函數的執行,直到周圍的函數返回。但是,當嘗試使用 defer 列印函數的執行時間時,它可能會傳回 0。讓我們檢查一下此行為及其解決方案。

問題

考慮以下程式碼片段:

即使休眠了一秒,延遲時間差計算總是印出 0。為什麼會發生這種情況?

出現這個問題是因為延遲函數的參數在函數延遲時進行評估。當延遲函數執行時,周圍的函數已經返回,並且 start 變數超出了範圍。

為了解決這個問題,我們可以建立一個捕獲 start 的當前值的閉包。修正後的程式碼如下:

將時序邏輯封裝在單獨的函數中也可以提高程式碼的複用性。

以上是為什麼在嘗試測量函數執行時間時,在 Go 中延遲時間差計算會回傳 0?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板