util

package
v1.22.0 Latest Latest
Warning

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

Go to latest
Published: Jun 12, 2023 License: Apache-2.0 Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ForEachChunk

func ForEachChunk[T any](data []T, chunkSize uint16, handler func(items []T))

ForEachChunk executes the given handler for each chunk of items in the slice.

func ForEachChunkUntil added in v1.22.0

func ForEachChunkUntil[T any](data []T, chunkSize uint16, handler func(items []T) (bool, error)) (bool, error)

Types

type MultiMap

type MultiMap[T comparable, Q any] struct {
	// contains filtered or unexported fields
}

MultiMap represents a map that can contain 1 or more values for each key.

func NewMultiMap

func NewMultiMap[T comparable, Q any]() *MultiMap[T, Q]

NewMultiMap creates and returns a new MultiMap from keys of type T to values of type Q.

func (*MultiMap[T, Q]) Add

func (mm *MultiMap[T, Q]) Add(key T, item Q)

Add adds the value to the map for the given key. If there exists an existing value, then this value is added to those already present *without comparison*. This means a value can be added twice, if this method is called again for the same value.

func (*MultiMap[T, Q]) AsReadOnly added in v1.16.0

func (mm *MultiMap[T, Q]) AsReadOnly() ReadOnlyMultimap[T, Q]

AsReadOnly returns a read-only *copy* of the mulitmap.

func (*MultiMap[T, Q]) Clear

func (mm *MultiMap[T, Q]) Clear()

Clear clears all entries in the map.

func (*MultiMap[T, Q]) Get

func (mm *MultiMap[T, Q]) Get(key T) ([]Q, bool)

Get returns the values for the given key in the map and whether the key existed. If the key does not exist, an empty slice is returned.

func (*MultiMap[T, Q]) Has

func (mm *MultiMap[T, Q]) Has(key T) bool

Has returns true if the key is found in the map.

func (*MultiMap[T, Q]) IsEmpty

func (mm *MultiMap[T, Q]) IsEmpty() bool

IsEmpty returns true if the map is currently empty.

func (*MultiMap[T, Q]) Keys

func (mm *MultiMap[T, Q]) Keys() []T

Keys returns the keys of the map.

func (*MultiMap[T, Q]) Len

func (mm *MultiMap[T, Q]) Len() int

Len returns the length of the map, e.g. the number of *keys* present.

func (*MultiMap[T, Q]) RemoveKey

func (mm *MultiMap[T, Q]) RemoveKey(key T)

RemoveKey removes the given key from the map.

func (MultiMap[T, Q]) Values added in v1.16.1

func (mm MultiMap[T, Q]) Values() []Q

Values returns all values in the map.

type ReadOnlyMultimap added in v1.16.0

type ReadOnlyMultimap[T comparable, Q any] interface {
	// Has returns true if the key is found in the map.
	Has(key T) bool

	// Get returns the values for the given key in the map and whether the key existed. If the key
	// does not exist, an empty slice is returned.
	Get(key T) ([]Q, bool)

	// IsEmpty returns true if the map is currently empty.
	IsEmpty() bool

	// Len returns the length of the map, e.g. the number of *keys* present.
	Len() int

	// Keys returns the keys of the map.
	Keys() []T

	// Values returns all values in the map.
	Values() []Q
}

ReadOnlyMultimap is a read-only version of the multimap.

type Set

type Set[T comparable] struct {
	// contains filtered or unexported fields
}

Set implements a very basic generic set.

func NewSet

func NewSet[T comparable](items ...T) *Set[T]

NewSet returns a new set.

func (*Set[T]) Add

func (s *Set[T]) Add(value T) bool

Add adds the given value to the set and returns true. If the value is already present, returns false.

func (*Set[T]) AsSlice

func (s *Set[T]) AsSlice() []T

AsSlice returns the set as a slice of values.

func (*Set[T]) Copy

func (s *Set[T]) Copy() *Set[T]

Copy returns a copy of this set.

func (*Set[T]) Extend

func (s *Set[T]) Extend(values []T)

Extend adds all the values to the set.

func (*Set[T]) ForEach

func (s *Set[T]) ForEach(callback func(value T) error) error

ForEach executes the callback for each item in the set until an error is encountered.

func (*Set[T]) Has

func (s *Set[T]) Has(value T) bool

Has returns true if the set contains the given value.

func (*Set[T]) Intersect

func (s *Set[T]) Intersect(other *Set[T]) *Set[T]

Intersect removes any values from this set that are not shared with the other set, returning a new set.

func (*Set[T]) IntersectionDifference

func (s *Set[T]) IntersectionDifference(other *Set[T]) *Set[T]

IntersectionDifference removes any values from this set that are not shared with the other set. Returns the same set.

func (*Set[T]) IsEmpty

func (s *Set[T]) IsEmpty() bool

IsEmpty returns true if the set is empty.

func (*Set[T]) Len

func (s *Set[T]) Len() int

Len returns the length of the set.

func (*Set[T]) Remove

func (s *Set[T]) Remove(value T) bool

Remove removes the value from the set, returning whether the element was present when the call was made.

func (*Set[T]) RemoveAll

func (s *Set[T]) RemoveAll(other *Set[T])

RemoveAll removes all values from this set found in the other set.

func (*Set[T]) Subtract

func (s *Set[T]) Subtract(other *Set[T]) *Set[T]

Subtract subtracts the other set from this set, returning a new set.

type StringSetWrapper

type StringSetWrapper struct {
	StrSet *Set[string]
}

StringSetWrapper wraps a set of strings and provides marshalling for zerolog.

func StringSet

func StringSet(set *Set[string]) StringSetWrapper

StringSet wraps a Set of strings and provides automatic log marshalling.

func (StringSetWrapper) MarshalZerologObject

func (s StringSetWrapper) MarshalZerologObject(e *zerolog.Event)

MarshalZerologObject implements zerolog object marshalling.

Jump to

Keyboard shortcuts

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