預先定義類型的遞歸類型限制
在 Go 泛型中,可以使用介面指定泛型類型的類型限制。然而,定義一個需要實現帶有泛型類型本身參數的方法的限制可能具有挑戰性。
Go 泛型的目前草案不允許遞歸類型約束,使其無法實現所需的行為。例如,考慮以下接口:
我們可以為自訂類型實作此接口,例如 Int:
但是,以下程式碼將無法編譯,因為Int 不滿足 Lesser接口:
A解決此限制的方法是定義一個通用接口,將自身引用為類型參數:
此介面指定任何實作Lesser 介面的類型都必須有一個Less方法,該方法採用相同的參數
然後我們可以使用這個通用介面定義IsLess 函數:
現在,我們可以實現滿足以下條件的自訂類型Lesser 約束:
將IsLess函數與這些自訂類型一起使用將產生正確的行為:
此解決方案透過要求實現具有泛型類型參數的方法。
以上是如何在 Go 泛型中實現遞歸類型約束?的詳細內容。更多資訊請關注PHP中文網其他相關文章!