Go 中函數作為參數
在Java 中,可以將函數作為參數傳遞,儘管實現起來可能會有些複雜匿名內部類。但是 Go 是否提供了類似的機制來簡化這個過程?
Go 的函數型別
是的,Go 支援使用函數型別將函數傳遞為參數。函數類型定義函數的簽名,指定其參數和傳回值的類型。例如,我們可以定義一個接受整數參數並傳回字串的函數型別轉換:
type convert func(int) string
實作函數型別
我們可以實作一個具體的函數滿足轉換函數類型:
func value(x int) string { return fmt.Sprintf("%v", x) }
將函數傳遞為參數
定義並實現函數類型後,我們可以將函數作為參數傳遞給其他函數。例如,以下函數 quote123 接受類型為 Convert 的函數並將其應用於數字123:
func quote123(fn convert) string { return fmt.Sprintf("%q", fn(123)) }
範例
在提供的程式碼範例中,我們示範如何使用轉換函數類型並將函數作為參數傳遞:
這展示了Go函數類型的靈活性和表現力,允許創建可組合和可重複使用的程式碼。
以上是Go 可以像 Java 一樣將函數當作參數傳遞嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!