# README
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.