You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
607 B
42 lines
607 B
package gentools
|
|
|
|
func IndexOf[T comparable](arr []T, value T) int {
|
|
for i, v := range arr {
|
|
if v == value {
|
|
return i
|
|
}
|
|
}
|
|
|
|
return -1
|
|
}
|
|
|
|
func AddUniques[T comparable](arr *[]T, values ...T) {
|
|
Outer:
|
|
for _, v := range values {
|
|
for _, v2 := range *arr {
|
|
if v2 == v {
|
|
continue Outer
|
|
}
|
|
}
|
|
|
|
*arr = append(*arr, v)
|
|
}
|
|
}
|
|
|
|
func Map[T any, U any](arr []T, cb func(T) U) []U {
|
|
arr2 := make([]U, len(arr))
|
|
for i, v := range arr {
|
|
arr2[i] = cb(v)
|
|
}
|
|
|
|
return arr2
|
|
}
|
|
|
|
func Flatten[T any](arr [][]T) []T {
|
|
arr2 := make([]T, 0, 128)
|
|
for _, sub := range arr {
|
|
arr2 = sub
|
|
}
|
|
|
|
return arr2
|
|
}
|