понедельник, 27 апреля 2020 г.

Две базовых реализации набора (set) в Golang

Идиоматический способ реализации набора в 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"] // Наличие элемента


Читайте также:


Комментариев нет:

Отправить комментарий