Categorygithub.com/adam-hanna/arrayOperations
modulepackage
0.2.6
Repository: https://github.com/adam-hanna/arrayoperations.git
Documentation: pkg.go.dev

# README

Build Status Coverage Status Go Report Card GoDoc

arrayOperations

Small library for performing union, intersect, difference and distinct operations on slices in goLang

I don't promise that these are optimized (not even close!), but they work :)

Quickstart

var a = []int{1, 1, 2, 3}
var b = []int{2, 4}

z, ok := Difference(a, b)
if !ok {
	fmt.Println("Cannot find difference")
}

slice, ok := z.Interface().([]int)
if !ok {
	fmt.Println("Cannot convert to slice")
}
fmt.Println(slice, reflect.TypeOf(slice)) // [1, 3, 4] []int

API

Difference

func Difference(arrs ...interface{}) (reflect.Value, bool)

Difference returns a slice of values that are only present in one of the input slices

[1, 2, 2, 4, 6] & [2, 4, 5] >> [1, 5, 6]

[1, 1, 3, 4, 5, 6] >> [1, 3, 4, 5, 6]

// EXAMPLE
var a = []int{1, 1, 2, 3}
var b = []int{2, 4}

z, ok := Difference(a, b)
if !ok {
    fmt.Println("Cannot find difference")
}

slice, ok := z.Interface().([]int)
if !ok {
    fmt.Println("Cannot convert to slice")
}
fmt.Println(slice, reflect.TypeOf(slice)) // [1, 3, 4] []int

Distinct

func Distinct(arr interface{}) (reflect.Value, bool)

Distinct returns the unique vals of a slice

[1, 1, 2, 3] >> [1, 2, 3]

// EXAMPLE
var a = []int{1, 1, 2, 3}

z, ok := Distinct(a)
if !ok {
    fmt.Println("Cannot find distinct")
}

slice, ok := z.Interface().([]int)
if !ok {
    fmt.Println("Cannot convert to slice")
}
fmt.Println(slice, reflect.TypeOf(slice)) // [1, 2, 3] []int

Intersect

func Intersect(arrs ...interface{}) (reflect.Value, bool)

Intersect returns a slice of values that are present in all of the input slices

[1, 1, 3, 4, 5, 6] & [2, 3, 6] >> [3, 6]

[1, 1, 3, 4, 5, 6] >> [1, 3, 4, 5, 6]

// EXAMPLE
var a = []int{1, 1, 2, 3}
var b = []int{2, 4}

z, ok := Intersect(a, b)
if !ok {
    fmt.Println("Cannot find intersect")
}

slice, ok := z.Interface().([]int)
if !ok {
    fmt.Println("Cannot convert to slice")
}
fmt.Println(slice, reflect.TypeOf(slice)) // [2] []int

Union

func Union(arrs ...interface{}) (reflect.Value, bool)

Union returns a slice that contains the unique values of all the input slices

[1, 2, 2, 4, 6] & [2, 4, 5] >> [1, 2, 4, 5, 6]

[1, 1, 3, 4, 5, 6] >> [1, 3, 4, 5, 6]

// EXAMPLE
var a = []int{1, 1, 2, 3}
var b = []int{2, 4}

z, ok := Union(a, b)
if !ok {
    fmt.Println("Cannot find union")
}

slice, ok := z.Interface().([]int)
if !ok {
    fmt.Println("Cannot convert to slice")
}
fmt.Println(slice, reflect.TypeOf(slice)) // [1, 2, 3, 4] []int

License

MIT

# Functions

Difference returns a slice of values that are only present in one of the input slices [1, 2, 2, 4, 6] & [2, 4, 5] >> [1, 5, 6] [1, 1, 3, 4, 5, 6] >> [1, 3, 4, 5, 6].
DifferenceString finds the difference of two arrays.
DifferenceStringArr finds the difference of two arrays using a multidimensional array as inputs Deprecated: use Difference instead.
DifferenceUint64 finds the difference of two arrays.
DifferenceUint64Arr finds the difference of two arrays using a multidimensional array as inputs.
Distinct returns the unique vals of a slice [1, 1, 2, 3] >> [1, 2, 3].
DistinctIntersectUint64 finds the intersection of two arrays of distinct vals.
DistinctIntersectUint64Arr finds the intersection of two distinct arrays using a multidimensional array as inputs Deprecated: use Distinct instead.
DistinctString removes duplicate values from one array.
DistinctUint64 removes duplicate values from one array.
Intersect returns a slice of values that are present in all of the input slices [1, 1, 3, 4, 5, 6] & [2, 3, 6] >> [3, 6] [1, 1, 3, 4, 5, 6] >> [1, 3, 4, 5, 6].
IntersectString finds the intersection of two arrays.
IntersectStringArr finds the intersection of two arrays using a multidimensional array as inputs Deprecated: use Intersect instead.
IntersectUint64 finds the intersection of two arrays.
IntersectUint64Arr finds the intersection of two arrays using a multidimensional array as inputs Deprecated: use Intersect instead.
SortedIntersectUint64 finds the intersection of two sorted arrays.
SortedIntersectUint64Arr finds the intersection of two arrays using a multidimensional array as inputs Deprecated: use Intersect instead.
Union returns a slice that contains the unique values of all the input slices [1, 2, 2, 4, 6] & [2, 4, 5] >> [1, 2, 4, 5, 6] [1, 1, 3, 4, 5, 6] >> [1, 3, 4, 5, 6].
UnionString finds the union of two arrays.
UnionStringArr finds the union of two arrays using a multidimensional array as inputs Deprecated: use Union instead.
UnionUint64 finds the union of two arrays.
UnionUint64Arr finds the union of two arrays using a multidimensional array as inputs Deprecated: use Union instead.