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)
biubiubiu
讨论数量: 4
Mericustar

你这种写法应该是属于模板元编程的范畴了,golang 里面目前并不支持模板元编程

1年前 评论
滚球兽进化 (楼主) 1年前
Mericustar (作者) 1年前
滚球兽进化 (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!