Logo

Programming-Idioms

This language bar is your friend. Select your favorite languages!
  • Go

Idiom #118 List to set

Create the set y from the list x.
x may contain duplicates. y is unordered and has no repeated values.

Turning the list [a,b,c,b] into the set {c,a,b}
y := make(map[T]struct{}, len(x))
for _, v := range x {
	y[v] = struct{}{}
}

Iterate to add each item to the map.
T is the type of the items.
func sliceToSet[T comparable](x []T) map[T]struct{} {
	y := make(map[T]struct{}, len(x))
	for _, v := range x {
		y[v] = struct{}{}
	}
	return y
}

sliceToSet is generic. Its type parameter T has a constraint: must be comparable with ==.
(def y (set x))

New implementation...
< >
programming-idioms.org