Go 1.18 泛型中的索引约束
随着 Go 1.18 中泛型的引入,开发人员有机会实现适用于特定类型的算法类型。一种常见的要求是使用支持索引的类型,例如数组、切片、映射和字符串。
可索引约束
将类型参数限制为可索引类型,考虑使用以下带有并集的约束:
type Indexable interface {
~[]byte | ~string
}
可索引约束的限制
虽然上述约束适用于索引字节和字符串,但将其与其他可索引类型(例如映射和数组)一起使用时存在限制:
替代方法
由于这些限制,支持索引的唯一实用联合是[]字节|细绳。该联合允许索引操作,但不支持范围操作,因为它缺少核心类型。
用法示例
以下示例演示如何使用 Indexable 约束:
func GetAt[T Indexable](v T, i int) byte {
return v[i]
}
这个函数接受一个可索引值和一个索引,并返回指定索引处的字节。
结论
而Go 1.18提供了一种方法使用联合将类型约束为可索引类型,该约束的局限性意味着它仅适用于有限的用例集,即索引字节和字符串。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3