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中文网其他相关文章!