Go 1.18 泛型中的索引約束
Go 1.18 泛型中的索引約束隨著Go 1.18 中泛型的引入,開發人員有機會實現適用於特定類型的演算法類型。常見的要求是使用支援索引的類型,例如陣列、切片、映射和字串。
可索引約束type Indexable interface {
~[]byte | ~string
}
將類型參數限制為可索引類型,考慮使用以下帶有並集的約束:type Indexable interface { 〜[]位元組| 〜字串 }
可索引約束的限制陣列: 陣列的長度是其類型的一部分,因此聯合需要指定所有可能的長度。這可能很麻煩並且容易出現越界錯誤。
替代方法由於這些限制,支持索引的唯一實用聯合是[]字節|細繩。此聯合允許索引操作,但不支援範圍操作,因為它缺少核心類型。
用法範例type Indexable interface {
~[]byte | ~string
}
以下範例示範如何使用Indexable 限制: func GetAt[T Indexable](v T, i int) byte { 返回 v[i] }這個函數接受一個可索引值和一個索引,並傳回指定索引處的位元組。
結論免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3