Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
4f3cf3f537 | |||
2124bff9de | |||
2fb5ea542d |
2
go.mod
2
go.mod
@ -1,5 +1,3 @@
|
|||||||
module git.milar.in/milarin/slices
|
module git.milar.in/milarin/slices
|
||||||
|
|
||||||
go 1.19
|
go 1.19
|
||||||
|
|
||||||
require git.milar.in/milarin/channel v0.0.7
|
|
||||||
|
@ -4,7 +4,7 @@ func Reverse[T any](slice []T) []T {
|
|||||||
s := make([]T, len(slice))
|
s := make([]T, len(slice))
|
||||||
for i := 0; i < len(slice); i++ {
|
for i := 0; i < len(slice); i++ {
|
||||||
ri := len(slice) - 1 - i
|
ri := len(slice) - 1 - i
|
||||||
s[ri] = s[i]
|
s[ri] = slice[i]
|
||||||
}
|
}
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
11
search.go
Normal file
11
search.go
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package slices
|
||||||
|
|
||||||
|
func Search[T any](slice []T, f func(a, b T) T) T {
|
||||||
|
if len(slice) == 0 {
|
||||||
|
return *new(T)
|
||||||
|
}
|
||||||
|
|
||||||
|
value := slice[0]
|
||||||
|
Each(slice, func(v T) { value = f(value, v) })
|
||||||
|
return value
|
||||||
|
}
|
12
slices.go
12
slices.go
@ -1,9 +1,5 @@
|
|||||||
package slices
|
package slices
|
||||||
|
|
||||||
import (
|
|
||||||
"git.milar.in/milarin/channel"
|
|
||||||
)
|
|
||||||
|
|
||||||
func IndexOf[T comparable](slice []T, value T) int {
|
func IndexOf[T comparable](slice []T, value T) int {
|
||||||
return IndexOfCmp(slice, value, DefaultEqualityComparator[T])
|
return IndexOfCmp(slice, value, DefaultEqualityComparator[T])
|
||||||
}
|
}
|
||||||
@ -33,14 +29,6 @@ func Map[I, O any](slice []I, mapper func(I) O) []O {
|
|||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
func MapParallel[I, O any](slice []I, mapper func(I) O) []O {
|
|
||||||
return channel.ToSlice(channel.Map(channel.Of(slice...), mapper))
|
|
||||||
}
|
|
||||||
|
|
||||||
func MapParallelWithRunner[I, O any](slice []I, runner channel.Runner, mapper func(I) O) []O {
|
|
||||||
return channel.ToSlice(channel.MapWithRunner(channel.Of(slice...), runner, mapper))
|
|
||||||
}
|
|
||||||
|
|
||||||
func Each[T any](slice []T, f func(T)) {
|
func Each[T any](slice []T, f func(T)) {
|
||||||
EachIndex(slice, func(_ int, v T) { f(v) })
|
EachIndex(slice, func(_ int, v T) { f(v) })
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user