Fork me on GitHub

Filters elements from a source based on a predicate function.

func Filter[T any](predicate Predicate[T], source any, dest any) *Builder[T]
  • Description: Filters elements from source based on the predicate function and stores them in dest.

  • Parameters:

    • predicate: Function that evaluates whether an element should be included in the result. It takes an element of type T and returns a bool.

    • source: Source data to filter (expects pointers to slices or maps).

    • dest: Destination where filtered elements will be stored (expects pointers to lists or maps).

Example

 1package main
 2
 3import (
 4	"fmt"
 5	collection "github.com/jose78/go-collection/v2"
 6)
 7
 8// Filter only even numbers
 9func filterModule(elem int) bool {
10	return elem%2 == 0
11}
12
13func main() {
14	slice := []int{1, 2, 3, 4, 5}
15	filteredSlice := []int{}
16	builder := collection.Filter(filterModule, slice, &filteredSlice)
17	if builder != nil {
18		if err := builder.Error(); err != nil {
19			fmt.Printf("Error during filtering: %v\n", err)
20		}
21	} else {
22		fmt.Println("Filtered slice:", filteredSlice)
23	}
24}