指標的通用介面
在 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中文網其他相關文章!