场景:
支持泛型的 Go 1.18
问题:
无法将数字转换为泛型。
说明:
我正在尝试移植我的general purpose库以支持泛型。我正在处理数字转换错误。
我定义了一个包含所有数字类型的包,如下所示:
package types
type Number interface {
int | int8 | int16 | int32 | int64 | uint | uint8 | uint16 | uint32 | uint64 | uintptr | float32 | float64
}
处理泛型我没有特别的问题。我唯一不明白的是:
如何将定义的类型(如int)转换为泛型?
让我们假设以下示例:
// FindIndexValue is delegated to retrieve the index of the given value into the input array.
func FindIndexValue[T types.Number](array []T, value T) []T {
var indexs []T
for i := range array {
if array[i] == value {
indexs = append(indexs, i)
}
}
return indexs
}
在上面的代码片段中,错误位于以下行:
...
for i := range array {
...
}
这是因为range内置迭代数组并返回int给定位置的索引()。
问题是:
如何将定义的类型(int在这种情况下)转换为泛型T? 错误:
cannot use i (variable of type int) as type T in argument to append
30秒到达战场
哈士奇WWW
相关分类