Проверяет знание структур данных в Go, использующих хэш-функции, и понимание их внутреннего устройства.
Хэш-функция преобразует входные данные произвольной длины в фиксированное число (хэш-код). В структурах данных хэш-код используется для быстрого поиска места хранения элемента. В Go основная структура, построенная на хэшировании, — это map.
Map в Go — это хэш-таблица, которая хранит пары ключ-значение. При вставке ключ хэшируется, и полученный хэш определяет корзину (bucket), куда будет помещена пара. При поиске ключ снова хэшируется, и поиск идет только в одной корзине, что дает среднюю сложность O(1).
package main
import "fmt"
func main() {
// Создание map
m := make(map[string]int)
m["apple"] = 5
m["banana"] = 3
// Поиск по ключу
value, exists := m["apple"]
if exists {
fmt.Println("apple:", value)
}
// Удаление
delete(m, "banana")
}В стандартной библиотеке Go нет отдельного типа для множества (set), но его можно реализовать через map с пустыми значениями: map[string]struct{}. Также хэш-функции используются в некоторых алгоритмах, например, в хэш-таблицах для кэширования или в структурах данных типа блум-фильтра, но это уже сторонние библиотеки.
Map — это основная структура данных в Go, использующая хэш-функции. Она незаменима для быстрого доступа к данным по ключу и широко применяется в реальных проектах. Понимание её устройства помогает писать эффективный код и избегать проблем с производительностью.