gset

package
v0.1.5 Latest Latest
Warning

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

Go to latest
Published: Nov 11, 2024 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type IntSet

type IntSet struct {
	// contains filtered or unexported fields
}

IntSet is consisted of int items.

func NewIntSet

func NewIntSet(safe ...bool) *IntSet

NewIntSet create and returns a new set, which contains un-repeated items. The parameter `safe` is used to specify whether using set in concurrent-safety, which is false in default.

func NewIntSetFrom

func NewIntSetFrom(items []int, safe ...bool) *IntSet

NewIntSetFrom returns a new set from `items`.

func (*IntSet) Add

func (set *IntSet) Add(item ...int)

Add adds one or multiple items to the set.

func (*IntSet) AddIfNotExist

func (set *IntSet) AddIfNotExist(item int) bool

AddIfNotExist checks whether item exists in the set, it adds the item to set and returns true if it does not exists in the set, or else it does nothing and returns false.

Note that, if `item` is nil, it does nothing and returns false.

func (*IntSet) AddIfNotExistFunc

func (set *IntSet) AddIfNotExistFunc(item int, f func() bool) bool

AddIfNotExistFunc checks whether item exists in the set, it adds the item to set and returns true if it does not exists in the set and function `f` returns true, or else it does nothing and returns false.

Note that, the function `f` is executed without writing lock.

func (*IntSet) AddIfNotExistFuncLock

func (set *IntSet) AddIfNotExistFuncLock(item int, f func() bool) bool

AddIfNotExistFuncLock checks whether item exists in the set, it adds the item to set and returns true if it does not exists in the set and function `f` returns true, or else it does nothing and returns false.

Note that, the function `f` is executed without writing lock.

func (*IntSet) Clear

func (set *IntSet) Clear()

Clear deletes all items of the set.

func (*IntSet) Complement

func (set *IntSet) Complement(full *IntSet) (newSet *IntSet)

Complement returns a new set which is the complement from `set` to `full`. Which means, all the items in `newSet` are in `full` and not in `set`.

It returns the difference between `full` and `set` if the given set `full` is not the full set of `set`.

func (*IntSet) Contains

func (set *IntSet) Contains(item int) bool

Contains checks whether the set contains `item`.

func (*IntSet) DeepCopy

func (set *IntSet) DeepCopy() interface{}

DeepCopy implements interface for deep copy of current type.

func (*IntSet) Diff

func (set *IntSet) Diff(others ...*IntSet) (newSet *IntSet)

Diff returns a new set which is the difference set from `set` to `other`. Which means, all the items in `newSet` are in `set` but not in `other`.

func (*IntSet) Equal

func (set *IntSet) Equal(other *IntSet) bool

Equal checks whether the two sets equal.

func (*IntSet) Intersect

func (set *IntSet) Intersect(others ...*IntSet) (newSet *IntSet)

Intersect returns a new set which is the intersection from `set` to `other`. Which means, all the items in `newSet` are in `set` and also in `other`.

func (*IntSet) IsSubsetOf

func (set *IntSet) IsSubsetOf(other *IntSet) bool

IsSubsetOf checks whether the current set is a sub-set of `other`.

func (*IntSet) Iterator

func (set *IntSet) Iterator(f func(v int) bool)

Iterator iterates the set readonly with given callback function `f`, if `f` returns true then continue iterating; or false to stop.

func (*IntSet) Join

func (set *IntSet) Join(glue string) string

Join joins items with a string `glue`.

func (*IntSet) LockFunc

func (set *IntSet) LockFunc(f func(m map[int]struct{}))

LockFunc locks writing with callback function `f`.

func (*IntSet) MarshalJSON

func (set *IntSet) MarshalJSON() ([]byte, error)

MarshalJSON implements the interface MarshalJSON for json.Marshal.

func (*IntSet) Merge

func (set *IntSet) Merge(others ...*IntSet) *IntSet

Merge adds items from `others` sets into `set`.

func (*IntSet) Pop

func (set *IntSet) Pop() int

Pop randomly pops an item from set.

func (*IntSet) Pops

func (set *IntSet) Pops(size int) []int

Pops randomly pops `size` items from set. It returns all items if size == -1.

func (*IntSet) RLockFunc

func (set *IntSet) RLockFunc(f func(m map[int]struct{}))

RLockFunc locks reading with callback function `f`.

func (*IntSet) Remove

func (set *IntSet) Remove(item int)

Remove deletes `item` from set.

func (*IntSet) Size

func (set *IntSet) Size() int

Size returns the size of the set.

func (*IntSet) Slice

func (set *IntSet) Slice() []int

Slice returns the an of items of the set as slice.

func (*IntSet) String

func (set *IntSet) String() string

String returns items as a string, which implements like json.Marshal does.

func (*IntSet) Sum

func (set *IntSet) Sum() (sum int)

Sum sums items. Note: The items should be converted to int type, or you'd get a result that you unexpected.

func (*IntSet) Union

func (set *IntSet) Union(others ...*IntSet) (newSet *IntSet)

Union returns a new set which is the union of `set` and `other`. Which means, all the items in `newSet` are in `set` or in `other`.

func (*IntSet) UnmarshalJSON

func (set *IntSet) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the interface UnmarshalJSON for json.Unmarshal.

func (*IntSet) UnmarshalValue

func (set *IntSet) UnmarshalValue(value interface{}) (err error)

UnmarshalValue is an interface implement which sets any type of value for set.

func (*IntSet) Walk

func (set *IntSet) Walk(f func(item int) int) *IntSet

Walk applies a user supplied function `f` to every item of set.

type Set

type Set struct {
	// contains filtered or unexported fields
}

Set is consisted of interface{} items.

func New

func New(safe ...bool) *Set

New create and returns a new set, which contains un-repeated items. The parameter `safe` is used to specify whether using set in concurrent-safety, which is false in default.

func NewFrom

func NewFrom(items interface{}, safe ...bool) *Set

NewFrom returns a new set from `items`. Parameter `items` can be either a variable of any type, or a slice.

func NewSet

func NewSet(safe ...bool) *Set

NewSet create and returns a new set, which contains un-repeated items. Also see New.

func (*Set) Add

func (set *Set) Add(items ...interface{})

Add adds one or multiple items to the set.

func (*Set) AddIfNotExist

func (set *Set) AddIfNotExist(item interface{}) bool

AddIfNotExist checks whether item exists in the set, it adds the item to set and returns true if it does not exists in the set, or else it does nothing and returns false.

Note that, if `item` is nil, it does nothing and returns false.

func (*Set) AddIfNotExistFunc

func (set *Set) AddIfNotExistFunc(item interface{}, f func() bool) bool

AddIfNotExistFunc checks whether item exists in the set, it adds the item to set and returns true if it does not exist in the set and function `f` returns true, or else it does nothing and returns false.

Note that, if `item` is nil, it does nothing and returns false. The function `f` is executed without writing lock.

func (*Set) AddIfNotExistFuncLock

func (set *Set) AddIfNotExistFuncLock(item interface{}, f func() bool) bool

AddIfNotExistFuncLock checks whether item exists in the set, it adds the item to set and returns true if it does not exists in the set and function `f` returns true, or else it does nothing and returns false.

Note that, if `item` is nil, it does nothing and returns false. The function `f` is executed within writing lock.

func (*Set) Clear

func (set *Set) Clear()

Clear deletes all items of the set.

func (*Set) Complement

func (set *Set) Complement(full *Set) (newSet *Set)

Complement returns a new set which is the complement from `set` to `full`. Which means, all the items in `newSet` are in `full` and not in `set`.

It returns the difference between `full` and `set` if the given set `full` is not the full set of `set`.

func (*Set) Contains

func (set *Set) Contains(item interface{}) bool

Contains checks whether the set contains `item`.

func (*Set) DeepCopy

func (set *Set) DeepCopy() interface{}

DeepCopy implements interface for deep copy of current type.

func (*Set) Diff

func (set *Set) Diff(others ...*Set) (newSet *Set)

Diff returns a new set which is the difference set from `set` to `others`. Which means, all the items in `newSet` are in `set` but not in `others`.

func (*Set) Equal

func (set *Set) Equal(other *Set) bool

Equal checks whether the two sets equal.

func (*Set) Intersect

func (set *Set) Intersect(others ...*Set) (newSet *Set)

Intersect returns a new set which is the intersection from `set` to `others`. Which means, all the items in `newSet` are in `set` and also in `others`.

func (*Set) IsSubsetOf

func (set *Set) IsSubsetOf(other *Set) bool

IsSubsetOf checks whether the current set is a sub-set of `other`.

func (*Set) Iterator

func (set *Set) Iterator(f func(v interface{}) bool)

Iterator iterates the set readonly with given callback function `f`, if `f` returns true then continue iterating; or false to stop.

func (*Set) Join

func (set *Set) Join(glue string) string

Join joins items with a string `glue`.

func (*Set) LockFunc

func (set *Set) LockFunc(f func(m map[interface{}]struct{}))

LockFunc locks writing with callback function `f`.

func (*Set) MarshalJSON

func (set *Set) MarshalJSON() ([]byte, error)

MarshalJSON implements the interface MarshalJSON for json.Marshal.

func (*Set) Merge

func (set *Set) Merge(others ...*Set) *Set

Merge adds items from `others` sets into `set`.

func (*Set) Pop

func (set *Set) Pop() interface{}

Pop randomly pops an item from set.

func (*Set) Pops

func (set *Set) Pops(size int) []interface{}

Pops randomly pops `size` items from set. It returns all items if size == -1.

func (*Set) RLockFunc

func (set *Set) RLockFunc(f func(m map[interface{}]struct{}))

RLockFunc locks reading with callback function `f`.

func (*Set) Remove

func (set *Set) Remove(item interface{})

Remove deletes `item` from set.

func (*Set) Size

func (set *Set) Size() int

Size returns the size of the set.

func (*Set) Slice

func (set *Set) Slice() []interface{}

Slice returns all items of the set as slice.

func (*Set) String

func (set *Set) String() string

String returns items as a string, which implements like json.Marshal does.

func (*Set) Sum

func (set *Set) Sum() (sum int)

Sum sums items. Note: The items should be converted to int type, or you'd get a result that you unexpected.

func (*Set) Union

func (set *Set) Union(others ...*Set) (newSet *Set)

Union returns a new set which is the union of `set` and `others`. Which means, all the items in `newSet` are in `set` or in `others`.

func (*Set) UnmarshalJSON

func (set *Set) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the interface UnmarshalJSON for json.Unmarshal.

func (*Set) UnmarshalValue

func (set *Set) UnmarshalValue(value interface{}) (err error)

UnmarshalValue is an interface implement which sets any type of value for set.

func (*Set) Walk

func (set *Set) Walk(f func(item interface{}) interface{}) *Set

Walk applies a user supplied function `f` to every item of set.

type StrSet

type StrSet struct {
	// contains filtered or unexported fields
}

StrSet is consisted of string items.

func NewStrSet

func NewStrSet(safe ...bool) *StrSet

NewStrSet create and returns a new set, which contains un-repeated items. The parameter `safe` is used to specify whether using set in concurrent-safety, which is false in default.

func NewStrSetFrom

func NewStrSetFrom(items []string, safe ...bool) *StrSet

NewStrSetFrom returns a new set from `items`.

func (*StrSet) Add

func (set *StrSet) Add(item ...string)

Add adds one or multiple items to the set.

func (*StrSet) AddIfNotExist

func (set *StrSet) AddIfNotExist(item string) bool

AddIfNotExist checks whether item exists in the set, it adds the item to set and returns true if it does not exist in the set, or else it does nothing and returns false.

func (*StrSet) AddIfNotExistFunc

func (set *StrSet) AddIfNotExistFunc(item string, f func() bool) bool

AddIfNotExistFunc checks whether item exists in the set, it adds the item to set and returns true if it does not exists in the set and function `f` returns true, or else it does nothing and returns false.

Note that, the function `f` is executed without writing lock.

func (*StrSet) AddIfNotExistFuncLock

func (set *StrSet) AddIfNotExistFuncLock(item string, f func() bool) bool

AddIfNotExistFuncLock checks whether item exists in the set, it adds the item to set and returns true if it does not exists in the set and function `f` returns true, or else it does nothing and returns false.

Note that, the function `f` is executed without writing lock.

func (*StrSet) Clear

func (set *StrSet) Clear()

Clear deletes all items of the set.

func (*StrSet) Complement

func (set *StrSet) Complement(full *StrSet) (newSet *StrSet)

Complement returns a new set which is the complement from `set` to `full`. Which means, all the items in `newSet` are in `full` and not in `set`.

It returns the difference between `full` and `set` if the given set `full` is not the full set of `set`.

func (*StrSet) Contains

func (set *StrSet) Contains(item string) bool

Contains checks whether the set contains `item`.

func (*StrSet) ContainsI

func (set *StrSet) ContainsI(item string) bool

ContainsI checks whether a value exists in the set with case-insensitively. Note that it internally iterates the whole set to do the comparison with case-insensitively.

func (*StrSet) DeepCopy

func (set *StrSet) DeepCopy() interface{}

DeepCopy implements interface for deep copy of current type.

func (*StrSet) Diff

func (set *StrSet) Diff(others ...*StrSet) (newSet *StrSet)

Diff returns a new set which is the difference set from `set` to `other`. Which means, all the items in `newSet` are in `set` but not in `other`.

func (*StrSet) Equal

func (set *StrSet) Equal(other *StrSet) bool

Equal checks whether the two sets equal.

func (*StrSet) Intersect

func (set *StrSet) Intersect(others ...*StrSet) (newSet *StrSet)

Intersect returns a new set which is the intersection from `set` to `other`. Which means, all the items in `newSet` are in `set` and also in `other`.

func (*StrSet) IsSubsetOf

func (set *StrSet) IsSubsetOf(other *StrSet) bool

IsSubsetOf checks whether the current set is a sub-set of `other`.

func (*StrSet) Iterator

func (set *StrSet) Iterator(f func(v string) bool)

Iterator iterates the set readonly with given callback function `f`, if `f` returns true then continue iterating; or false to stop.

func (*StrSet) Join

func (set *StrSet) Join(glue string) string

Join joins items with a string `glue`.

func (*StrSet) LockFunc

func (set *StrSet) LockFunc(f func(m map[string]struct{}))

LockFunc locks writing with callback function `f`.

func (*StrSet) MarshalJSON

func (set *StrSet) MarshalJSON() ([]byte, error)

MarshalJSON implements the interface MarshalJSON for json.Marshal.

func (*StrSet) Merge

func (set *StrSet) Merge(others ...*StrSet) *StrSet

Merge adds items from `others` sets into `set`.

func (*StrSet) Pop

func (set *StrSet) Pop() string

Pop randomly pops an item from set.

func (*StrSet) Pops

func (set *StrSet) Pops(size int) []string

Pops randomly pops `size` items from set. It returns all items if size == -1.

func (*StrSet) RLockFunc

func (set *StrSet) RLockFunc(f func(m map[string]struct{}))

RLockFunc locks reading with callback function `f`.

func (*StrSet) Remove

func (set *StrSet) Remove(item string)

Remove deletes `item` from set.

func (*StrSet) Size

func (set *StrSet) Size() int

Size returns the size of the set.

func (*StrSet) Slice

func (set *StrSet) Slice() []string

Slice returns the an of items of the set as slice.

func (*StrSet) String

func (set *StrSet) String() string

String returns items as a string, which implements like json.Marshal does.

func (*StrSet) Sum

func (set *StrSet) Sum() (sum int)

Sum sums items. Note: The items should be converted to int type, or you'd get a result that you unexpected.

func (*StrSet) Union

func (set *StrSet) Union(others ...*StrSet) (newSet *StrSet)

Union returns a new set which is the union of `set` and `other`. Which means, all the items in `newSet` are in `set` or in `other`.

func (*StrSet) UnmarshalJSON

func (set *StrSet) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the interface UnmarshalJSON for json.Unmarshal.

func (*StrSet) UnmarshalValue

func (set *StrSet) UnmarshalValue(value interface{}) (err error)

UnmarshalValue is an interface implement which sets any type of value for set.

func (*StrSet) Walk

func (set *StrSet) Walk(f func(item string) string) *StrSet

Walk applies a user supplied function `f` to every item of set.

Jump to

Keyboard shortcuts

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