如何使用运行时类型反射来转换类型?

drd*_*dot 0 generics interface go

我正在尝试使用泛型构建一个函数,它将接口切片转换为 T 类型的切片。

我想出了以下内容:

func convertInterfaceArray[T any](input []any, res []T) {
    for _, item := range input {
        res = append(res, item.(reflect.TypeOf(res[0])))
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,这不会编译。但你明白了。T 可以是任何类型,我有一个 []any 类型的输入切片需要转换为 []T

min*_*ndy 6

断言要键入的值T。不需要反思。

for _, item := range input {
    res = append(res, item.(T))
}
Run Code Online (Sandbox Code Playgroud)

https://go.dev/play/p/cFn_nsVFIik