在Go 中,聯合有兩個主要目的:
但是,這是至關重要的請注意,聯合只能在介面約束中使用。 嘗試將它們用作常規類型,例如 tt :=不支援 []testDifference[intOrString]。
此外,通用容器(例如切片)無法容納不同類型的項目。 雖然您的測試切片同時包含 testDifference[int] 和testDifference[string],這些特定實例化是不同的類型。
要解決這個問題,您可以為每種類型使用單獨的切片(ttInts 和 ttStrs)或將所有項目儲存為介面([]interface{})。
聯合約束上的操作僅限於類型集中所有類型都支援的操作。 int | 的情況字串,包括變數宣告、轉換、比較、排序和運算子。
範例:
在此範例中,beforeSendIntOrString 和 sumIntOrString 是泛型函數分別適用於 int 和 string 值。
以上是Go 泛型如何處理聯合及其在型別約束和容器中的限制?的詳細內容。更多資訊請關注PHP中文網其他相關文章!