updated dependencies and go

This commit is contained in:
2026-04-21 11:06:01 +02:00
parent f62e7499ec
commit 84b87d61f2
91 changed files with 551 additions and 637 deletions
+18 -41
View File
@@ -5,6 +5,8 @@ import (
"fmt"
"math/rand"
"reflect"
"slices"
"strings"
)
func BoolCount(arr ...bool) int {
@@ -41,22 +43,12 @@ func ReverseArray[T any](v []T) {
}
func InArray[T comparable](needle T, haystack []T) bool {
for _, v := range haystack {
if v == needle {
return true
}
}
return false
return slices.Contains(haystack, needle)
}
// ArrContains checks if the value is contained in the array (same as InArray, but odther name for better findability)
func ArrContains[T comparable](haystack []T, needle T) bool {
for _, v := range haystack {
if v == needle {
return true
}
}
return false
return slices.Contains(haystack, needle)
}
func ArrUnique[T comparable](array []T) []T {
@@ -119,12 +111,7 @@ func ArrAllErr[T any](arr []T, fn func(T) (bool, error)) (bool, error) {
}
func ArrNone[T any](arr []T, fn func(T) bool) bool {
for _, av := range arr {
if fn(av) {
return false
}
}
return true
return !slices.ContainsFunc(arr, fn)
}
func ArrNoneErr[T any](arr []T, fn func(T) (bool, error)) (bool, error) {
@@ -141,12 +128,7 @@ func ArrNoneErr[T any](arr []T, fn func(T) (bool, error)) (bool, error) {
}
func ArrAny[T any](arr []T, fn func(T) bool) bool {
for _, av := range arr {
if fn(av) {
return true
}
}
return false
return slices.ContainsFunc(arr, fn)
}
func ArrAnyErr[T any](arr []T, fn func(T) (bool, error)) (bool, error) {
@@ -246,7 +228,7 @@ func ArrFirst[T any](arr []T, comp func(v T) bool) (T, bool) {
func ArrFirstOrNil[T any](arr []T, comp func(v T) bool) *T {
for _, v := range arr {
if comp(v) {
return Ptr(v)
return new(v)
}
}
return nil
@@ -274,7 +256,7 @@ func ArrLastOrNil[T any](arr []T, comp func(v T) bool) *T {
}
}
if found {
return Ptr(result)
return new(result)
} else {
return nil
}
@@ -319,10 +301,8 @@ func ArrLastIndexFunc[T any](arr []T, comp func(v T) bool) int {
}
func AddToSet[T comparable](set []T, add T) []T {
for _, v := range set {
if v == add {
return set
}
if slices.Contains(set, add) {
return set
}
return append(set, add)
}
@@ -522,7 +502,7 @@ func ArrAppend[T any](arr []T, add ...T) []T {
func ArrPrepend[T any](arr []T, add ...T) []T {
out := make([]T, len(arr)+len(add))
copy(out[len(add):], arr)
for i := 0; i < len(add); i++ {
for i := range add {
out[len(add)-i-1] = add[i]
}
return out
@@ -558,8 +538,8 @@ func ArrExcept[T comparable](arr []T, needles ...T) []T {
return r
}
func ArrayToInterface[T any](t []T) []interface{} {
res := make([]interface{}, 0, len(t))
func ArrayToInterface[T any](t []T) []any {
res := make([]any, 0, len(t))
for i, _ := range t {
res = append(res, t[i])
}
@@ -567,15 +547,15 @@ func ArrayToInterface[T any](t []T) []interface{} {
}
func JoinString(arr []string, delimiter string) string {
str := ""
var str strings.Builder
for i, v := range arr {
str += v
str.WriteString(v)
if i < len(arr)-1 {
str += delimiter
str.WriteString(delimiter)
}
}
return str
return str.String()
}
// ArrChunk splits the array into buckets of max-size `chunkSize`
@@ -595,10 +575,7 @@ func ArrChunk[T any](arr []T, chunkSize int) [][]T {
i := 0
for i < len(arr) {
right := i + chunkSize
if right >= len(arr) {
right = len(arr)
}
right := min(i+chunkSize, len(arr))
res = append(res, arr[i:right])