指针的通用接口
在 Go 中,可以通过泛型来定义指针实现的接口。考虑以下场景:
问题:
使用带有类型参数的通用接口的解决方案:
要实现此目的,您可以使用类型参数声明 A 接口,确保实现类型是指向其类型的指针参数:
type A[P any] interface { SomeMethod() *P }
然后,修改Handler的签名如下:
func Handler[P any, T A[P]](callback func(result T)) { result := new(P) callback(result) }
使用Wrapper接口的解决方案:
如果不能修改A的定义,可以将其包装到自己的接口中MyA:
type MyA[P any] interface { A *P }
然后,更新Handler的签名以使用MyA接口:
func Handler[P any, T MyA[P]](callback func(result T)) { result := new(P) callback(result) }
以上是Go 中的泛型如何处理具有基于指针的接口参数的函数?的详细内容。更多信息请关注PHP中文网其他相关文章!