Skip to content

Commit 4226a23

Browse files
joy999Copilot
andauthored
feat(container/garray): add TArray (gogf#4466)
Add TArray[T] for wrapping Array --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent b8e414e commit 4226a23

4 files changed

Lines changed: 2673 additions & 0 deletions

File tree

container/garray/garray_func.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)