Compare commits

..

2 Commits

Author SHA1 Message Date
5dc9e98f6b Add langext.ArrFirst / langext.ArrLast 2022-10-27 17:09:48 +02:00
4dd1c08e77 Add langext.BoolCount / langext.Range 2022-10-27 17:06:16 +02:00

View File

@@ -4,6 +4,24 @@ import (
"reflect" "reflect"
) )
func BoolCount(arr ...bool) int {
c := 0
for _, v := range arr {
if v {
c++
}
}
return c
}
func Range[T IntegerConstraint](start T, end T) []T {
r := make([]T, 0, end-start)
for i := start; i < end; i++ {
r = append(r, i)
}
return r
}
func ForceArray[T any](v []T) []T { func ForceArray[T any](v []T) []T {
if v == nil { if v == nil {
return make([]T, 0) return make([]T, 0)
@@ -124,6 +142,27 @@ func ArrAnyErr(arr interface{}, fn func(int) (bool, error)) (bool, error) {
return false, nil return false, nil
} }
func ArrFirst[T comparable](arr []T, comp func(v T) bool) (T, bool) {
for _, v := range arr {
if comp(v) {
return v, true
}
}
return *new(T), false
}
func ArrLast[T comparable](arr []T, comp func(v T) bool) (T, bool) {
found := false
result := *new(T)
for _, v := range arr {
if comp(v) {
found = true
result = v
}
}
return result, found
}
func AddToSet[T comparable](set []T, add T) []T { func AddToSet[T comparable](set []T, add T) []T {
for _, v := range set { for _, v := range set {
if v == add { if v == add {