package sliceutil
func Filter[T any](slice []T, predicate func(T) bool) []T {
var result []T
for _, item := range slice {
if predicate(item) {
result = append(result, item)
}
}
return result
}
func Map[T, U any](slice []T, mapper func(T) U) []U {
result := make([]U, len(slice))
for i, item := range slice {
result[i] = mapper(item)
}
return result
}
func Chunk[T any](slice []T, size int) [][]T {
if size <= 0 {
return [][]T{}
}
var chunks [][]T
for i := 0; i < len(slice); i += size {
end := i + size
if end > len(slice) {
end = len(slice)
}
chunks = append(chunks, slice[i:end])
}
return chunks
}
func Unique[T comparable](slice []T) []T {
seen := make(map[T]bool)
var result []T
for _, item := range slice {
if !seen[item] {
seen[item] = true
result = append(result, item)
}
}
return result
}