Go 1.18 泛型中的索引限制
隨著Go 1.18 中泛型的引入,開發人員有機會實現適用於特定對象的演算法類型。常見的要求是使用支援索引的類型,例如陣列、切片、映射和字串。
可索引約束
將類型參數限制為可索引類型,請考慮將以下約束與聯合結合使用:
<code class="go">type Indexable interface { ~[]byte | ~string }</code>
可索引約束的限制
雖然上述約束適用於索引字節和字串,但存在以下限制:將其與其他可索引類型一起使用,例如映射和數組:
替代方法
由於這些限制,支持索引的唯一實用聯合是[]位元組|細繩。此聯合允許索引操作,但不支援範圍操作,因為它缺少核心類型。
用法範例
以下範例示範如何使用Indexable 限制:
<code class="go">func GetAt[T Indexable](v T, i int) byte { return v[i] }</code>
這個函數接受一個可索引值和索引,並傳回指定索引處的位元組。
結論
雖然Go 1.18 提供了一種使用聯合將類型約束為可索引類型的方法,該約束的限制意味著它僅適用於有限的用例集,即索引位元組和字串。
以上是我們如何有效地約束 Go 1.18 泛型中的可索引類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!