just

package module
v0.20.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 14, 2022 License: MIT Imports: 3 Imported by: 6

README

just

Build Status Go Reference

This project is contains functions that help to do noizy things in every project.

  • Filter slices, maps.
  • Apply functions to collections.
  • Null[any] for optional fields in api an sql.DB requests.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Abs added in v0.15.0

func Abs[T number](v T) T

Abs returns abs value of v.

func Bool added in v0.4.0

func Bool[T builtin](v T) bool

Bool returns true if element not equal to default value for this type.

func MapCopy added in v0.18.0

func MapCopy[K comparable, V any](m map[K]V) map[K]V

MapCopy returns a shallow copy of map.

func MapDefaults added in v0.18.0

func MapDefaults[K comparable, V any](m map[K]V, defaults map[K]V) map[K]V

MapDefaults returns the map `m` after filling in its non-exists keys by `defaults`. Example: {1:1}, {1:0, 2:2} => {1:1, 2:2}

func MapFilter added in v0.3.0

func MapFilter[K comparable, V any](in map[K]V, fn func(k K, v V) bool) map[K]V

MapFilter returns the map which contains elements that `fn(key, value) == true`.

func MapFilterKeys added in v0.3.0

func MapFilterKeys[K comparable, V any](in map[K]V, fn func(k K) bool) map[K]V

MapFilterKeys returns the map which contains elements that `fn(key) == true`. That is a simplified version of MapFilter.

func MapFilterValues added in v0.3.0

func MapFilterValues[K comparable, V any](in map[K]V, fn func(v V) bool) map[K]V

MapFilterValues returns the map which contains elements that `fn(value) == true`. That is a simplified version of MapFilter.

func MapGetKeys added in v0.17.0

func MapGetKeys[K comparable, V any](m map[K]V) []K

MapGetKeys returns all keys of map.

func MapGetValues added in v0.17.0

func MapGetValues[K comparable, V any](m map[K]V) []V

MapGetValues returns all values of map. Not Uniq, unordered.

func MapMerge added in v0.3.0

func MapMerge[K comparable, V any](m1, m2 map[K]V, fn func(k K, v1, v2 V) V) map[K]V

MapMerge returns the map which contains all keys from m1, m2 and values from `fn(key, m1Value, m2Value)`.

func Max

func Max[T number](in ...T) T

Max returns the max number from `in`.

func Min

func Min[T number](in ...T) T

Min returns the min number from `in`.

func Pointer added in v0.2.0

func Pointer[T any](v T) *T

func Slice2Map added in v0.9.0

func Slice2Map[T comparable](in []T) map[T]struct{}

Slice2Map make map from slice, which contains all values from `in` as map keys.

func SliceAddNotExists added in v0.7.0

func SliceAddNotExists[T comparable](in []T, elem T) []T

SliceAddNotExists return `in` with `elem` inside when `elem` not exists in `in`.

func SliceAll added in v0.4.0

func SliceAll[T any](in []T, fn func(T) bool) bool

SliceAll returns true when `fn` returns true for all elements from `in`.

func SliceAny added in v0.4.0

func SliceAny[T any](in []T, fn func(T) bool) bool

SliceAny returns true when `fn` returns true for at least one element from `in`.

func SliceChain added in v0.19.0

func SliceChain[T any](in ...[]T) []T

SliceChain returns a slice where all `in` slices id appended to the end. Like append(append(in[0], in[1]...), in[2]...).

func SliceChunk added in v0.11.0

func SliceChunk[T any](in []T, fn func(i int, elem T) bool) [][]T

SliceChunk split `in` into chunks by fn(index, elem) == true.

func SliceChunkEvery added in v0.12.0

func SliceChunkEvery[T any](in []T, every int) [][]T

SliceChunkEvery split `in` into chunks by size `every`

func SliceContainsElem added in v0.10.0

func SliceContainsElem[T comparable](in []T, elem T) bool

SliceContainsElem returns true when `in` contains elem.

func SliceDifference added in v0.9.0

func SliceDifference[T comparable](oldSlice, newSlice []T) []T

SliceDifference return the difference between `oldSlice` and `newSlice`. Returns only elements which presented in `newSlice` but not presented in `oldSlice`. Example: [1,2,3], [3,4,5,5,5] => [4,5,5,5]

func SliceEqualUnordered added in v0.17.0

func SliceEqualUnordered[T comparable](in1, in2 []T) bool

SliceEqualUnordered returns true when all uniq values from `in1` contains in `in2`. Useful in tests for comparing expected and actual slices. Examples:

  • [1,2,3], [2,3,3,3,1,1] => true
  • [1], [1,1,1] => true
  • [1], [1] => true
  • [1], [2] => false

func SliceFillElem added in v0.11.0

func SliceFillElem[T any](l int, elem T) []T

SliceFillElem returns the slice with len `l` where all elements are equal to `elem`.

func SliceFilter added in v0.3.0

func SliceFilter[T any](in []T, fn func(T) bool) []T

SliceFilter returns slice of values from `in` where `fn(elem) == true`.

func SliceFindAllElements added in v0.13.0

func SliceFindAllElements[T any](in []T, fn func(i int, elem T) bool) []T

SliceFindAllElements return all elem from `in` that fn(index, elem) == true.

func SliceFindAllIndexes added in v0.13.0

func SliceFindAllIndexes[T any](in []T, fn func(i int, elem T) bool) []int

SliceFindAllIndexes return all indexes from `in` that fn(index, elem) == true.

func SliceIntersection added in v0.17.0

func SliceIntersection[T comparable](oldSlice, newSlice []T) []T

SliceIntersection returns elements that are presented in both slices. Example: [1,2,3], [2,4,3,3,3] => [2, 3]

func SliceMap added in v0.3.0

func SliceMap[T any, V any](in []T, fn func(T) V) []V

SliceMap returns the slice where each element of `in` was handled by `fn`.

func SliceRange added in v0.15.0

func SliceRange[T number](start, stop, step T) []T

SliceRange produces a sequence of integers from start (inclusive) to stop (exclusive) by step.

func SliceReverse added in v0.4.0

func SliceReverse[T any](in []T) []T

SliceReverse reverse the slice.

func SliceSort added in v0.20.0

func SliceSort[T any](in []T, less func(a, b T) bool)

SliceSort sort slice inplace.

func SliceSortCopy added in v0.20.0

func SliceSortCopy[T any](in []T, less func(a, b T) bool) []T

SliceSortCopy copy and sort slice.

func SliceUnion added in v0.8.0

func SliceUnion[T comparable](in ...[]T) []T

SliceUnion returns only uniq items from all slices.

func SliceUniq added in v0.3.0

func SliceUniq[T comparable](in []T) []T

SliceUniq returns only unique values from `in`.

func SliceWithout added in v0.10.0

func SliceWithout[T any](in []T, fn func(T) bool) []T

SliceWithout returns the slice `in` where fn(elem) == true.

func SliceWithoutElem added in v0.10.0

func SliceWithoutElem[T comparable](in []T, elem T) []T

SliceWithoutElem returns the slice `in` that not contains `elem`.

func SliceZip added in v0.10.0

func SliceZip[T any](in ...[]T) [][]T

SliceZip returns merged together the values of each of the arrays with the values at the corresponding position. If the len of `in` is different - will use smaller one.

func Sum

func Sum[T number](in ...T) T

Sum returns the sum of numbers from `in`.

Types

type KV added in v0.18.0

type KV[K comparable, V any] struct {
	Key K
	Val V
}

KV represents the key-value of map.

func MapPairs added in v0.18.0

func MapPairs[K comparable, V any](m map[K]V) []KV[K, V]

MapPairs returns slice of KV structs that contains ket-value pairs.

type NullVal added in v0.5.0

type NullVal[T any] struct {
	Val   T
	Valid bool
}

NullVal represent the nullable value for this type.

func Null added in v0.5.0

func Null[T any](val T) NullVal[T]

Null returns NullVal for `val` type, which are `NullVal.Valid == true`.

func NullNull added in v0.5.0

func NullNull[T any]() NullVal[T]

NullNull returns NullVal, which are `NullVal.Valid == false`.

func (*NullVal[T]) Scan added in v0.5.0

func (nv *NullVal[T]) Scan(value any) error

Scan implements the Scanner interface.

func (*NullVal[T]) SetDefault added in v0.5.0

func (nv *NullVal[T]) SetDefault(val T) bool

SetDefault set value `val` if NullVal.Valid == false.

func (NullVal[T]) Value added in v0.5.0

func (nv NullVal[T]) Value() (driver.Value, error)

Value implements the driver Valuer interface.

func (NullVal[T]) ValueOk added in v0.5.0

func (nv NullVal[T]) ValueOk() (T, bool)

ValueOk returns the NullVal.Val and NullVal.Valid.

type SliceElem added in v0.13.0

type SliceElem[T any] struct {
	// Idx is index of element in slice.
	Idx int
	// Val is value on slice by Idx index.
	Val T
}

SliceElem represent element of slice.

func SliceFindAll added in v0.13.0

func SliceFindAll[T any](in []T, fn func(i int, elem T) bool) []SliceElem[T]

SliceFindAll return all elem and index from `in` that fn(index, elem) == true.

func SliceFindFirst added in v0.13.0

func SliceFindFirst[T any](in []T, fn func(i int, elem T) bool) SliceElem[T]

SliceFindFirst return first elem from `in` that fn(index, elem) == true. returns index of found elem or -1 if elem not found.

func SliceFindFirstElem added in v0.14.0

func SliceFindFirstElem[T comparable](in []T, elem T) SliceElem[T]

SliceFindFirstElem return first elem from `in` that equals to `elem`.

func SliceFindLast added in v0.13.0

func SliceFindLast[T any](in []T, fn func(i int, elem T) bool) SliceElem[T]

SliceFindLast return last elem from `in` that fn(index, elem) == true. returns index of found elem or -1 if elem not found.

func SliceFindLastElem added in v0.14.0

func SliceFindLastElem[T comparable](in []T, elem T) SliceElem[T]

SliceFindLastElem return last elem from `in` that equals to `elem`.

func (SliceElem[T]) Ok added in v0.14.0

func (e SliceElem[T]) Ok() bool

Ok returns true if Idx is valid.

func (SliceElem[T]) ValueIdx added in v0.14.0

func (e SliceElem[T]) ValueIdx() (T, int)

ValueIdx returns value and index as is. Useful for this:

elem, idx := SliceFindFirstElem([]int{1,2,3}, 2).ValueIdx()

func (SliceElem[T]) ValueOk added in v0.14.0

func (e SliceElem[T]) ValueOk() (T, bool)

ValueOk returns the value and true (when element is exists in slice) or false in other case. Useful for cases like:

if elem, ok := SliceFindFirstElem([]int{1,2,3}, 2); ok{
	fmt.Println(elem)
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL