在Go 中實現類似函數呼叫的行為
在Go 中,像go 和defer 這樣的關鍵字期望函數作為參數傳遞。但是,有一個限制阻止傳遞實際的函數呼叫。
答案:
不幸的是,沒有直接類型可以讓您模擬函數呼叫作為參數。 go 和 defer 是語言規範支援的語法結構,編譯器會強制執行此行為。
替代方法:使用函數值
要繞過此限制,您可以使用函數值。函數值是函數類型的變數或值。您可以稍後或在需要時隨時呼叫函數值。
模擬自動參數保存
在評論中,您提到了自動參數保存的願望。以下是如何使用輔助函數來實現此目的,該函數提供帶有保存參數的包裝函數:
反射作為選項
反射是另一種處理方法這種情況,但它涉及將函數作為介面傳遞並使用反射來呼叫它。這種方法比使用函數值效率低,但允許處理具有不同簽名的函數。
總之,雖然沒有直接的方法將函數呼叫作為參數傳遞,但可以使用函數值或透過幫助器模仿參數保存函數提供了實現類似行為的解決方法。
以上是你能在 Go 中將函數呼叫作為參數傳遞嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!