Slice Utilities

Common operations for working with slices: filtering, mapping, chunking

go (1.21) 2025-11-12 slice utility functional collections

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

RAW
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}
RAW
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!