Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
c5e23ab451
|
|||
c266d9204b
|
@@ -217,6 +217,15 @@ func ArrFirst[T any](arr []T, comp func(v T) bool) (T, bool) {
|
|||||||
return *new(T), false
|
return *new(T), false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ArrFirstOrNil[T any](arr []T, comp func(v T) bool) *T {
|
||||||
|
for _, v := range arr {
|
||||||
|
if comp(v) {
|
||||||
|
return Ptr(v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func ArrLast[T any](arr []T, comp func(v T) bool) (T, bool) {
|
func ArrLast[T any](arr []T, comp func(v T) bool) (T, bool) {
|
||||||
found := false
|
found := false
|
||||||
result := *new(T)
|
result := *new(T)
|
||||||
@@ -229,6 +238,22 @@ func ArrLast[T any](arr []T, comp func(v T) bool) (T, bool) {
|
|||||||
return result, found
|
return result, found
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ArrLastOrNil[T any](arr []T, comp func(v T) bool) *T {
|
||||||
|
found := false
|
||||||
|
result := *new(T)
|
||||||
|
for _, v := range arr {
|
||||||
|
if comp(v) {
|
||||||
|
found = true
|
||||||
|
result = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if found {
|
||||||
|
return Ptr(result)
|
||||||
|
} else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func ArrFirstIndex[T comparable](arr []T, needle T) int {
|
func ArrFirstIndex[T comparable](arr []T, needle T) int {
|
||||||
for i, v := range arr {
|
for i, v := range arr {
|
||||||
if v == needle {
|
if v == needle {
|
||||||
@@ -356,3 +381,19 @@ func ArrCastToAny[T1 any](arr []T1) []any {
|
|||||||
}
|
}
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ArrConcat[T any](arr ...[]T) []T {
|
||||||
|
c := 0
|
||||||
|
for _, v := range arr {
|
||||||
|
c += len(v)
|
||||||
|
}
|
||||||
|
r := make([]T, c)
|
||||||
|
i := 0
|
||||||
|
for _, av := range arr {
|
||||||
|
for _, v := range av {
|
||||||
|
r[i] = v
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user