Slice Utilities
Common operations for working with slices: filtering, mapping, chunking
Description
A collection of utility functions for working with Go slices. Provides common operations like filtering, mapping, chunking, and deduplication.
Features
- Filter slices by condition
- Map/transform elements
- Chunk into smaller slices
- Deduplicate elements
Code
package sliceutilfunc 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}
package mainimport ( "fmt" "sliceutil")func main() { numbers := []int[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 4, 6] // Filter even numbers even := sliceutil.Filter(numbers, func(n int) bool { return n%2 == 0 }) fmt.Println("Even:", even) // Map to squares squares := sliceutil.Map(numbers, func(n int) int { return n * n }) fmt.Println("Squares:", squares) // Chunk into groups chunks := sliceutil.Chunk(numbers, 3) fmt.Println("Chunks:", chunks) // Remove duplicates unique := sliceutil.Unique(numbers) fmt.Println("Unique:", unique)}
Comments
No comments yet. Be the first to comment!
Please login to leave a comment.