Go 中的函數指標和適配器:將函數作為參數傳遞
提出的問題圍繞在 Go中將任意函數作為參數傳遞,特別是將特定類型的函數轉換為裝飾器可以接受的通用類型的能力function.
最初,引入了一個裝飾器函數,它可以用單個參數和單個返回值包裝函數。它接受 func(interface{}) interface{} 類型的函數作為其參數,這允許它處理對介面類型進行操作的函數。然而,問題是如何在不使用匿名函數的情況下使其他特定類型的函數(例如 func(string) string)與裝飾器函數相容。
這個問題的答案在於Go 型別系統的限制。傳遞interface{}類型的參數並不一定表示該函數接受任意類型。相反,取決於函數本身的具體實作。例如,接受結構的函數將接收其單獨的成員,而接受包含該結構的介面的函數將接收類型資訊和指向它的指標。
因此,在不使用泛型的情況下,唯一的方法是使用泛型。實現這種適應性的方法是透過使用適配器函數。適配器函數充當中介者的角色,將特定函數類型轉換為裝飾器函數所需的通用介面類型。
以上是如何在沒有匿名函數的情況下將特定類型的 Go 函數適配為通用裝飾器函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!