@@ -67,3 +67,51 @@ func quickSortStr(values []string, comparator func(a, b string) int) {
6767 quickSortStr (values [:head ], comparator )
6868 quickSortStr (values [head + 1 :], comparator )
6969}
70+
71+ // tToAnySlice converts []T to []any
72+ func tToAnySlice [T comparable ](values []T ) []any {
73+ if values == nil {
74+ return nil
75+ }
76+ anyValues := make ([]any , len (values ), cap (values ))
77+ for k , v := range values {
78+ anyValues [k ] = v
79+ }
80+ return anyValues
81+ }
82+
83+ // anyToTSlice is convert []any to []T
84+ func anyToTSlice [T comparable ](values []any ) []T {
85+ if values == nil {
86+ return nil
87+ }
88+ tValues := make ([]T , len (values ), cap (values ))
89+ for k , v := range values {
90+ tValues [k ], _ = v .(T )
91+ }
92+ return tValues
93+ }
94+
95+ // tToAnySlices converts [][]T to [][]any
96+ func tToAnySlices [T comparable ](values [][]T ) [][]any {
97+ if values == nil {
98+ return nil
99+ }
100+ anyValues := make ([][]any , len (values ), cap (values ))
101+ for k , v := range values {
102+ anyValues [k ] = tToAnySlice (v )
103+ }
104+ return anyValues
105+ }
106+
107+ // anyToTSlices converts [][]any to [][]T
108+ func anyToTSlices [T comparable ](values [][]any ) [][]T {
109+ if values == nil {
110+ return nil
111+ }
112+ tValues := make ([][]T , len (values ), cap (values ))
113+ for k , v := range values {
114+ tValues [k ] = anyToTSlice [T ](v )
115+ }
116+ return tValues
117+ }
0 commit comments