比如[]T转[]any,只能通过遍历显式类型转换吗?有没有其他方法。
func toAnyArray[T any](s []T) []any {
    t := make([]any, len(s))
    for i, v := range s {
        t[i] = v
    }
    return t
}
|      1caotian      2023-03-21 13:12:02 +08:00 试试 lo 库 | 
|      20o0O0o0O0o      2023-03-21 13:25:26 +08:00 via iPhone  3 | 
|  |      3qieqie      2023-03-21 14:14:42 +08:00  1 转[]any/ {}interface 比较特殊,其它类型可以用 reflect.SliceHeader 之类的奇技淫巧 https://github.com/golang/go/wiki/InterfaceSlice | 
|  |      4keakon      2023-03-21 15:31:02 +08:00 如果类型兼容,用 unsafe.Pointer 转,但是 []any 不行 a := []int{1, 2, 3} b := *(*[]uint)(unsafe.Pointer(&a)) fmt.Println(b) c := *(*[]float32)(unsafe.Pointer(&a)) fmt.Println(c) d := *(*[]float64)(unsafe.Pointer(&a)) fmt.Println(d) e := *(*[]any)(unsafe.Pointer(&a)) fmt.Println(e) 如果是做接口的话,不建议用 []any ,直接用 any ,然后做类型检查,文档中注明比较好。 | 
|  |      5LeegoYih OP @keakon 谢谢,是调用方,实际场景是调用 sql.Stmt 的 Query 方法`func (s *Stmt) Query(args ...any) (*Rows, error)` 暂时先不用泛型了吧🤣 | 
|  |      6guonaihong      2023-03-30 20:37:21 +08:00 Copilot, 回车工程师的诞生。 |