Go 中的函数指针和适配器:将函数作为参数传递
提出的问题围绕在 Go 中将任意函数作为参数传递,特别是将特定类型的函数转换为装饰器可以接受的通用类型的能力function.
最初,引入了一个装饰器函数,它可以用单个参数和单个返回值包装函数。它接受 func(interface{}) interface{} 类型的函数作为其参数,这允许它处理对接口类型进行操作的函数。然而,问题是如何在不使用匿名函数的情况下使其他特定类型的函数(例如 func(string) string)与装饰器函数兼容。
这个问题的答案在于Go 类型系统的局限性。传递interface{}类型的参数并不一定意味着该函数接受任意类型。相反,取决于函数本身的具体实现。例如,接受结构的函数将接收其单独的成员,而接受包含该结构的接口的函数将接收类型信息和指向它的指针。
因此,在不使用泛型的情况下,唯一的方法是使用泛型。实现这种适应性的方法是通过使用适配器函数。适配器函数充当中介者的角色,将特定函数类型转换为装饰器函数所需的通用接口类型。
以上是如何在没有匿名函数的情况下将特定类型的 Go 函数适配为通用装饰器函数?的详细内容。更多信息请关注PHP中文网其他相关文章!