Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
26ea846e93 | |||
0592add8ca |
19
filter.go
19
filter.go
@ -9,3 +9,22 @@ func Filter[T any](slice []T, f func(T) bool) []T {
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
func FindFirst[T any](slice []T, f func(T) bool) (T, bool) {
|
||||
for _, v := range slice {
|
||||
if f(v) {
|
||||
return v, true
|
||||
}
|
||||
}
|
||||
return *new(T), false
|
||||
}
|
||||
|
||||
func FindLast[T any](slice []T, f func(T) bool) (T, bool) {
|
||||
for i := len(slice); i >= 0; i-- {
|
||||
v := slice[i]
|
||||
if f(v) {
|
||||
return v, true
|
||||
}
|
||||
}
|
||||
return *new(T), false
|
||||
}
|
||||
|
12
map.go
12
map.go
@ -7,3 +7,15 @@ func Map[I, O any](slice []I, mapper func(I) O) []O {
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
func MapError[I, O any](slice []I, mapper func(I) (O, error)) ([]O, error) {
|
||||
ret := make([]O, 0, len(slice))
|
||||
for _, old := range slice {
|
||||
new, err := mapper(old)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ret = append(ret, new)
|
||||
}
|
||||
return ret, nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user