实现接口的指针的通用类型
在 Go 中使用接口时,可能需要传入一个指向实现接口的结构体。这在定义泛型函数时可能具有挑战性。
问题:
如何为实现接口的指针创建泛型类型?
答案:
选项1:修改界面定义
type A[P any] interface { SomeMethod() *P }
func Handler[P any, T A[P]](callback func(result T)) { result := new(P) callback(result) }
选项 2:包装接口(如果无法修改定义)
type MyA[P any] interface { A *P }
func Handler[P any, T MyA[P]](callback func(result T)) { result := new(P) callback(result) }
用法:
两个选项都允许传递一个指向实现泛型函数 A 接口的结构的指针处理程序。例如:
type Aimpl struct {} func (a *Aimpl) SomeMethod() {} func main() { Handler(func(a *Aimpl) { fmt.Printf("%#v\n", a) }) }
以上是如何在 Go 中为实现接口的指针创建通用类型?的详细内容。更多信息请关注PHP中文网其他相关文章!