set

package
v0.10.0 Latest Latest
Warning

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

Go to latest
Published: Aug 10, 2025 License: BSD-3-Clause Imports: 4 Imported by: 0

Documentation

Overview

Package set

See more: https://go.dev/blog/generic-interfacess

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Add added in v0.8.0

func Add[E any](set Set[E], seq iter.Seq[E])

Add adds all unique elements from seq into set.

func Unique added in v0.8.0

func Unique[E, S any, P setter[E, S]](input iter.Seq[E]) iter.Seq[E]

Unique removes duplicate elements from the input sequence, yielding only the first instance of any element.

Example
s := []int{3, 1, 2, 0, 1, 3, 1, 4, 1, 3}
for v := range Unique[int, TreeSet[int]](slices.Values(s)) {
	fmt.Println(v)
}
Output:

3
1
2
0
4

Types

type Comparer added in v0.8.0

type Comparer[E any] interface {
	comparable // cmp.Ordered
	tree.Comparer[E]
}

type HashSet added in v0.8.0

type HashSet[E comparable] map[E]struct{}

func (HashSet[E]) Add added in v0.8.0

func (s HashSet[E]) Add(v E)

func (HashSet[E]) All added in v0.8.0

func (s HashSet[E]) All() iter.Seq[E]

func (HashSet[E]) Delete added in v0.8.0

func (s HashSet[E]) Delete(v E)

func (HashSet[E]) Has added in v0.8.0

func (s HashSet[E]) Has(v E) bool

type OrderedSet added in v0.8.0

type OrderedSet[E Comparer[E]] struct {
	// contains filtered or unexported fields
}

OrderedSet

type Player struct {
    Name   string
    Rating int
}
func (p Player) Compare(q Player) int {
    return cmp.Compare(p.Rating, q.Rating)
}

players := []Player{
    {"Garry Kasparov", 2851},
    {"Magnus Carlsen", 2882},
    {"Bobby Fischer", 2785},
    {"Anatoly Karpov", 2780},
    {"Mikhail Tal", 2705},
}

var s OrderedSet[Player]
for _, p := range players {
     s.Add(p)
}
for p := range s.All() {
    fmt.Println(p)
}

func (*OrderedSet[E]) Add added in v0.8.0

func (s *OrderedSet[E]) Add(e E)

func (*OrderedSet[E]) All added in v0.8.0

func (s *OrderedSet[E]) All() iter.Seq[E]

func (*OrderedSet[E]) Has added in v0.8.0

func (s *OrderedSet[E]) Has(e E) bool

type Set added in v0.8.0

type Set[E any] interface {
	Add(E)
	Has(E) bool
	All() iter.Seq[E]
}

type TreeSet added in v0.8.0

type TreeSet[E cmp.Ordered] struct {
	// contains filtered or unexported fields
}
Example
s := []int{3, 1, 2, 0, 1, 3, 1, 4, 1, 3}
ts := new(TreeSet[int])
Add(ts, slices.Values(s))
for v := range ts.All() {
	fmt.Println(v)
}
Output:

0
1
2
3
4

func (*TreeSet[E]) Add added in v0.8.0

func (s *TreeSet[E]) Add(element E)

func (*TreeSet[E]) All added in v0.8.0

func (s *TreeSet[E]) All() iter.Seq[E]

func (*TreeSet[E]) Has added in v0.8.0

func (s *TreeSet[E]) Has(e E) bool

Jump to

Keyboard shortcuts

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