diff options
Diffstat (limited to 'pkg/u/list.go')
| -rw-r--r-- | pkg/u/list.go | 14 | 
1 files changed, 13 insertions, 1 deletions
| diff --git a/pkg/u/list.go b/pkg/u/list.go index 39d7b11..835ecd2 100644 --- a/pkg/u/list.go +++ b/pkg/u/list.go @@ -1,5 +1,17 @@  package u +func Filter[T any](v []T, f func(T) bool) []T { +	var result []T + +	for _, s := range v { +		if f(s) { +			result = append(result, s) +		} +	} + +	return result +} +  func First[T any](v []T) (T, bool) {  	if len(v) == 0 {  		var zero T @@ -25,7 +37,7 @@ func LastOrZero[T any](v []T) T {  }  func ChunkBy[T any](items []T, chunkSize int) [][]T { -	var chunks = make([][]T, 0, (len(items)/chunkSize)+1) +	chunks := make([][]T, 0, (len(items)/chunkSize)+1)  	for chunkSize < len(items) {  		items, chunks = items[chunkSize:], append(chunks, items[0:chunkSize:chunkSize])  	} | 
