首頁 > 後端開發 > Golang > 如何在 Go 泛型中實現遞歸類型約束?

如何在 Go 泛型中實現遞歸類型約束?

Susan Sarandon
發布: 2024-12-22 06:57:44
原創
557 人瀏覽過

How Can I Achieve Recursive Type Constraints in Go Generics?

預先定義類型的遞歸類型限制

在 Go 泛型中,可以使用介面指定泛型類型的類型限制。然而,定義一個需要實現帶有泛型類型本身參數的方法的限制可能具有挑戰性。

目前草案限制

Go 泛型的目前草案不允許遞歸類型約束,使其無法實現所需的行為。例如,考慮以下接口:

我們可以為自訂類型實作此接口,例如 Int:

但是,以下程式碼將無法編譯,因為Int 不滿足 Lesser接口:

使用預定義接口的解決方案

A解決此限制的方法是定義一個通用接口,將自身引用為類型參數:

此介面指定任何實作Lesser 介面的類型都必須有一個Less方法,該方法採用相同的參數

然後我們可以使用這個通用介面定義IsLess 函數:

現在,我們可以實現滿足以下條件的自訂類型Lesser 約束:

將IsLess函數與這些自訂類型一起使用將產生正確的行為:

此解決方案透過要求實現具有泛型類型參數的方法。

以上是如何在 Go 泛型中實現遞歸類型約束?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板