Идиоматический способ реализации набора в Go - использовать карту.
set := make(map[string]bool) // Новый пустой набор
set["Foo"] = true // Добавить
for k := range set { // Пройти в цикле
fmt.Println(k)
}
delete(set, "Foo") // Удалить
size := len(set) // Размер
exists := set["Foo"] // Наличие элемента
Если память, используемая логическими значениями, является проблемой, которая кажется маловероятной, вы можете заменить их пустыми структурами. В Go пустая структура обычно не использует память.
type void struct{}
var member void
set := make(map[string]void) // Новый пустой набор
set["Foo"] = member // Добавить
for k := range set { // Пройти в цикле
fmt.Println(k)
}
delete(set, "Foo") // Удалить
size := len(set) // Размер
_, exists := set["Foo"] // Наличие элемента
Читайте также:
Комментариев нет:
Отправить комментарий