Skip to main content
Version: v2.2.82 (latest)
Reference · Collections

Array Equality

Equality checking for arrays using the Eq type class. Compare arrays element-wise with custom equality functions.

01

Core API

FunctionSignatureDescription
Eqfunc Eq[A any](eq Eq[A]) Eq[[]A]Create array equality from element equality
02

Usage Examples

Basic Equality

basic.go
import (
  A "github.com/IBM/fp-go/v2/array"
  E "github.com/IBM/fp-go/v2/eq"
  N "github.com/IBM/fp-go/v2/number"
)

// Create array equality from element equality
arrayEq := A.Eq(N.Eq)

arr1 := []int{1, 2, 3}
arr2 := []int{1, 2, 3}
arr3 := []int{1, 2, 4}

arrayEq.Equals(arr1, arr2)  // true
arrayEq.Equals(arr1, arr3)  // false

Custom Equality

custom.go
type User struct {
  ID   int
  Name string
}

// Compare by ID only
userEq := E.FromEquals(func(a, b User) bool {
  return a.ID == b.ID
})

arrayUserEq := A.Eq(userEq)

users1 := []User{{ID: 1, Name: "Alice"}}
users2 := []User{{ID: 1, Name: "Alice Updated"}}

arrayUserEq.Equals(users1, users2)  // true (same ID)

String Arrays

strings.go
import S "github.com/IBM/fp-go/v2/string"

arrayStrEq := A.Eq(S.Eq)

arr1 := []string{"hello", "world"}
arr2 := []string{"hello", "world"}
arr3 := []string{"hello", "go"}

arrayStrEq.Equals(arr1, arr2)  // true
arrayStrEq.Equals(arr1, arr3)  // false