set.v0: gopkg.in/fatih/set.v0 Index | Files

package set

import "gopkg.in/fatih/set.v0"

Package set provides both threadsafe and non-threadsafe implementations of a generic set data structure. In the threadsafe set, safety encompasses all operations on one set. Operations on multiple sets are consistent in that the elements of each set used was valid at exactly one point in time between the start and the end of the operation.

Index

Package Files

set.go set_nots.go set_ts.go

Constants

const (
    ThreadSafe = iota
    NonThreadSafe
)

func IntSlice Uses

func IntSlice(s Interface) []int

IntSlice is a helper function that returns a slice of ints of s. If the set contains mixed types of items only items of type int are returned.

func StringSlice Uses

func StringSlice(s Interface) []string

StringSlice is a helper function that returns a slice of strings of s. If the set contains mixed types of items only items of type string are returned.

type Interface Uses

type Interface interface {
    Add(items ...interface{})
    Remove(items ...interface{})
    Pop() interface{}
    Has(items ...interface{}) bool
    Size() int
    Clear()
    IsEmpty() bool
    IsEqual(s Interface) bool
    IsSubset(s Interface) bool
    IsSuperset(s Interface) bool
    Each(func(interface{}) bool)
    String() string
    List() []interface{}
    Copy() Interface
    Merge(s Interface)
    Separate(s Interface)
}

Interface is describing a Set. Sets are an unordered, unique list of values.

func Difference Uses

func Difference(set1, set2 Interface, sets ...Interface) Interface

Difference returns a new set which contains items which are in in the first set but not in the others. Unlike the Difference() method you can use this function separately with multiple sets.

func Intersection Uses

func Intersection(set1, set2 Interface, sets ...Interface) Interface

Intersection returns a new set which contains items that only exist in all given sets.

func New Uses

func New(settype SetType) Interface

New creates and initalizes a new Set interface. Its single parameter denotes the type of set to create. Either ThreadSafe or NonThreadSafe. The default is ThreadSafe.

func SymmetricDifference Uses

func SymmetricDifference(s Interface, t Interface) Interface

SymmetricDifference returns a new set which s is the difference of items which are in one of either, but not in both.

func Union Uses

func Union(set1, set2 Interface, sets ...Interface) Interface

Union is the merger of multiple sets. It returns a new set with all the elements present in all the sets that are passed.

The dynamic type of the returned set is determined by the first passed set's implementation of the New() method.

type Set Uses

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

Set defines a thread safe set data structure.

func (*Set) Add Uses

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

Add includes the specified items (one or more) to the set. The underlying Set s is modified. If passed nothing it silently returns.

func (*Set) Clear Uses

func (s *Set) Clear()

Clear removes all items from the set.

func (*Set) Copy Uses

func (s *Set) Copy() Interface

Copy returns a new Set with a copy of s.

func (*Set) Each Uses

func (s *Set) Each(f func(item interface{}) bool)

Each traverses the items in the Set, calling the provided function for each set member. Traversal will continue until all items in the Set have been visited, or if the closure returns false.

func (*Set) Has Uses

func (s *Set) Has(items ...interface{}) bool

Has looks for the existence of items passed. It returns false if nothing is passed. For multiple items it returns true only if all of the items exist.

func (*Set) IsEmpty Uses

func (s *Set) IsEmpty() bool

IsEmpty reports whether the Set is empty.

func (*Set) IsEqual Uses

func (s *Set) IsEqual(t Interface) bool

IsEqual test whether s and t are the same in size and have the same items.

func (*Set) IsSubset Uses

func (s *Set) IsSubset(t Interface) (subset bool)

IsSubset tests whether t is a subset of s.

func (*Set) IsSuperset Uses

func (s *Set) IsSuperset(t Interface) bool

IsSuperset tests whether t is a superset of s.

func (*Set) List Uses

func (s *Set) List() []interface{}

List returns a slice of all items. There is also StringSlice() and IntSlice() methods for returning slices of type string or int.

func (*Set) Merge Uses

func (s *Set) Merge(t Interface)

Merge is like Union, however it modifies the current set it's applied on with the given t set.

func (*Set) Pop Uses

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

Pop deletes and return an item from the set. The underlying Set s is modified. If set is empty, nil is returned.

func (*Set) Remove Uses

func (s *Set) Remove(items ...interface{})

Remove deletes the specified items from the set. The underlying Set s is modified. If passed nothing it silently returns.

func (*Set) Separate Uses

func (s *Set) Separate(t Interface)

it's not the opposite of Merge. Separate removes the set items containing in t from set s. Please aware that

func (*Set) Size Uses

func (s *Set) Size() int

Size returns the number of items in a set.

func (*Set) String Uses

func (s *Set) String() string

String returns a string representation of s

type SetNonTS Uses

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

SetNonTS defines a non-thread safe set data structure.

func (*SetNonTS) Add Uses

func (s *SetNonTS) Add(items ...interface{})

Add includes the specified items (one or more) to the set. The underlying Set s is modified. If passed nothing it silently returns.

func (*SetNonTS) Clear Uses

func (s *SetNonTS) Clear()

Clear removes all items from the set.

func (*SetNonTS) Copy Uses

func (s *SetNonTS) Copy() Interface

Copy returns a new Set with a copy of s.

func (*SetNonTS) Each Uses

func (s *SetNonTS) Each(f func(item interface{}) bool)

Each traverses the items in the Set, calling the provided function for each set member. Traversal will continue until all items in the Set have been visited, or if the closure returns false.

func (*SetNonTS) Has Uses

func (s *SetNonTS) Has(items ...interface{}) bool

Has looks for the existence of items passed. It returns false if nothing is passed. For multiple items it returns true only if all of the items exist.

func (*SetNonTS) IsEmpty Uses

func (s *SetNonTS) IsEmpty() bool

IsEmpty reports whether the Set is empty.

func (*SetNonTS) IsEqual Uses

func (s *SetNonTS) IsEqual(t Interface) bool

IsEqual test whether s and t are the same in size and have the same items.

func (*SetNonTS) IsSubset Uses

func (s *SetNonTS) IsSubset(t Interface) (subset bool)

IsSubset tests whether t is a subset of s.

func (*SetNonTS) IsSuperset Uses

func (s *SetNonTS) IsSuperset(t Interface) bool

IsSuperset tests whether t is a superset of s.

func (*SetNonTS) List Uses

func (s *SetNonTS) List() []interface{}

List returns a slice of all items. There is also StringSlice() and IntSlice() methods for returning slices of type string or int.

func (*SetNonTS) Merge Uses

func (s *SetNonTS) Merge(t Interface)

Merge is like Union, however it modifies the current set it's applied on with the given t set.

func (*SetNonTS) Pop Uses

func (s *SetNonTS) Pop() interface{}

Pop deletes and return an item from the set. The underlying Set s is modified. If set is empty, nil is returned.

func (*SetNonTS) Remove Uses

func (s *SetNonTS) Remove(items ...interface{})

Remove deletes the specified items from the set. The underlying Set s is modified. If passed nothing it silently returns.

func (*SetNonTS) Separate Uses

func (s *SetNonTS) Separate(t Interface)

it's not the opposite of Merge. Separate removes the set items containing in t from set s. Please aware that

func (*SetNonTS) Size Uses

func (s *SetNonTS) Size() int

Size returns the number of items in a set.

func (*SetNonTS) String Uses

func (s *SetNonTS) String() string

String returns a string representation of s

type SetType Uses

type SetType int

SetType denotes which type of set is created. ThreadSafe or NonThreadSafe

func (SetType) String Uses

func (s SetType) String() string

Package set imports 3 packages (graph) and is imported by 823 packages. Updated 2018-11-21. Refresh now. Tools for package owners.