在沒有泛型的Go 中實現泛型列表
Go 程式語言以其簡單性而聞名,不支援泛型或繼承。但是,它仍然提供了創建通用容器(例如列表)的方法。
使用介面實作通用列表
要建立通用列表,一種方法是使用介面類型,例如 Any。但是,使用此方法檢查 NULL 值變得具有挑戰性。
替代方案:使用程式碼產生
要克服使用介面的限制,請考慮程式碼產生。程式碼產生允許建立在編譯時處理不同資料類型的通用容器。 [gocqlx](https://github.com/gocql/gocqlx) 等函式庫使用此方法。
使用欄位類型儲存物件
使用以下方式儲存物件特定欄位類型,您可以使用所需欄位建立自訂結構並將其用作清單的元素類型。雖然 Go 沒有參數化類型,但它確實具有類型聲明,允許基於其他類型定義類型。
高階實作
對於更進階的需求,例如建立具有特定合適食物欄位類型的動物清單時,您可以使用組合或反射技術探索自訂實現。然而,這些解決方案都很複雜,不建議實際使用。
注意:
值得注意的是,Go 缺乏泛型在大多數實際場景中並不是一個重大限制。它的理念強調程式碼的簡單性和清晰性,這往往比泛型的好處更重要。
以上是如何在不使用泛型的情況下在 Go 中實現泛型列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!