Назад к вопросам
Junior
186
questionbank

Как можно реализовать множество (сет) в Go?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

В Go нет встроенного типа данных "множество". Его можно реализовать с помощью map.

// Реализация множества строк
type Set map[string]struct{}

// Добавление элемента
func (s Set) Add(item string) {
	s[item] = struct{}{} // Используем struct{}, чтобы не занимать лишнюю память
}

// Удаление элемента
func (s Set) Remove(item string) {
	delete(s, item)
}

// Проверка наличия элемента
func (s Set) Contains(item string) bool {
	_, ok := s[item]
	return ok
}

// Получение всех элементов (неупорядоченно)
func (s Set) ToSlice() []string {
	slice := make([]string, 0, len(s))
	for item := range s {
		slice = append(slice, item)
	}
	return slice
}