sliceutil

package
v0.1.3 Latest Latest
Warning

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

Go to latest
Published: Jun 4, 2024 License: MIT Imports: 5 Imported by: 164

README

sliceutil

The package contains various helpers to interact with slices

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Clone added in v0.0.18

func Clone[T comparable](t []T) []T

Clone a slice through built-in copy

func Contains

func Contains[T comparable](inputSlice []T, element T) bool

Contains if a slice contains an element

func ContainsItems

func ContainsItems[T comparable](s1 []T, s2 []T) bool

ContainsItems checks if s1 contains s2

func Dedupe

func Dedupe[T comparable](inputSlice []T) (result []T)

Dedupe removes duplicates from a slice of elements preserving the order

func Diff added in v0.0.4

func Diff[V comparable](s1, s2 []V) (extraS1, extraS2 []V)

Diff calculates the extra elements between two sequences

func ElementsMatch added in v0.0.4

func ElementsMatch[V comparable](s1, s2 []V) bool

ElementsMatch asserts that the specified listA(array, slice...) is equal to specified listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, the number of appearances of each of them in both lists should match.

func Equal added in v0.0.4

func Equal[T comparable](s1, s2 []T) bool

Equal checks if the items of two slices are equal respecting the order

func FirstNonZero added in v0.0.13

func FirstNonZero[T comparable](inputs []T) (T, bool)

FirstNonZero function takes a slice of comparable type inputs, and returns the first non-zero element in the slice along with a boolean value indicating if a non-zero element was found or not.

func IsEmpty added in v0.0.4

func IsEmpty[V comparable](s []V) bool

IsEmpty checks if the slice has length zero

func Merge added in v0.0.4

func Merge[V comparable](ss ...[]V) []V

Merge and dedupe multiple items

func MergeItems added in v0.0.4

func MergeItems[V comparable](items ...V) []V

Merge and dedupe multiple items into a

func PickRandom

func PickRandom[T any](v []T) T

PickRandom item from a slice of elements

func PruneEmptyStrings

func PruneEmptyStrings(v []string) []string

PruneEmptyStrings from the slice

func PruneEqual

func PruneEqual[T comparable](inputSlice []T, equalTo T) (r []T)

PruneEqual removes items from the slice equal to the specified value

func ToInt

func ToInt(s []string) ([]int, error)

ToInt converts a slice of strings to a slice of ints

func VisitRandom added in v0.0.32

func VisitRandom[T comparable](t []T, visit VisitFunc[T])

VisitRandom visits all items in the slice in random order and calls the specified function for each item

func VisitRandomZero added in v0.0.32

func VisitRandomZero[T comparable](t []T, visit VisitFunc[T])

VisitRandomZero visits all items in the slice in random order without allocations and calls the specified function for each item

func VisitSequential added in v0.0.32

func VisitSequential[T comparable](t []T, visit VisitFunc[T])

VisitSequential visits all items in the slice in sequential order and calls the specified function for each item

Types

type SyncSlice added in v0.1.0

type SyncSlice[K comparable] struct {
	Slice []K
	// contains filtered or unexported fields
}

SyncSlice provides a thread-safe slice for elements of any comparable type.

func NewSyncSlice added in v0.1.0

func NewSyncSlice[K comparable]() *SyncSlice[K]

NewSyncSlice initializes a new instance of SyncSlice.

func (*SyncSlice[K]) Append added in v0.1.0

func (ss *SyncSlice[K]) Append(items ...K)

Append adds elements to the end of the slice in a thread-safe manner.

func (*SyncSlice[K]) Each added in v0.1.0

func (ss *SyncSlice[K]) Each(f func(i int, k K) error)

Each iterates over all elements in the slice and applies the function f to each element. Iteration is done in a read-locked context to prevent data race.

func (*SyncSlice[K]) Empty added in v0.1.0

func (ss *SyncSlice[K]) Empty()

Empty clears the slice by reinitializing it in a thread-safe manner.

func (*SyncSlice[K]) Get added in v0.1.0

func (ss *SyncSlice[K]) Get(index int) (K, bool)

Get retrieves an element by index from the slice safely. Returns the element and true if index is within bounds, otherwise returns zero value and false.

func (*SyncSlice[K]) Len added in v0.1.0

func (ss *SyncSlice[K]) Len() int

Len returns the number of elements in the slice in a thread-safe manner.

func (*SyncSlice[K]) Put added in v0.1.0

func (ss *SyncSlice[K]) Put(index int, value K) bool

Put updates the element at the specified index in the slice in a thread-safe manner. Returns true if the index is within bounds, otherwise false.

type VisitFunc added in v0.0.32

type VisitFunc[T comparable] func(index int, item T) error

Jump to

Keyboard shortcuts

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