繁体   English   中英

如何在 golang generics 中将数组指定为类型约束?

[英]how to specify array as type constraints in golang generics?

在 generics 重写代码以减少代码重复的过程中,有一种类型期望 [N]T 作为类型约束。

是否可以在 golang 中将数组指定为类型约束? 例如,[32768]byte 或 [100]uint64。

一个相关的话题,在golang generics中是否可以指定static值约束?

您可以在类型参数约束中使用 arrays,但必须指定长度:

func foo[T ~[2]uint64]MyFunc(v T) {}

这当然不会承认,比如说, type Foo [3]uint64作为类型参数,因为长度不同。 就像声明数组变量不允许非常量长度一样。

所以这也有效:

const length = 2

type C interface {
    ~[length]uint64
}

符号[...]uint64{}仅在复合文字中可用,因此这也不是约束中的一个选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM