go 目前的泛型是不支持 map|slice 同时支持传入的吗?写了一个遍历函数,但是无法编译。
go 目前的泛型是不支持 map|slice 同时支持传入的吗?写了一个遍历函数,但是无法编译。
type RangeType[K comparable, V any] interface {
map[K]V | []V
}
func ToSlice[K comparable, V, V2 any, CollectionType map[K]V | []V](f func(K, V) V2, collection CollectionType) []V2 {
r := make([]V2, len(collection))
i := 0
for k, v := range collection {
r[i] = f(k, v)
i += 1
}
return r
}
arms/array.go:86:20: cannot range over collection (variable of type CollectionType constrained by map[K]V|[]V) (CollectionType has no core type)
你这种写法应该是属于模板元编程的范畴了,golang 里面目前并不支持模板元编程