Ответ
В Go, bucket — это внутренняя структура хэш-таблицы (map), содержащая пары ключ-значение. Каждый bucket хранит до 8 элементов. При коллизиях (когда разные ключи попадают в один bucket из-за одинаковых хэшей) используется цепочка (linked list) или перезапись в overflow bucket.
Пример структуры bucket:
type bmap struct {
tophash [bucketCnt]uint8 // метки хэшей
keys [bucketCnt]keyType
values [bucketCnt]valueType
overflow *bmap // ссылка на overflow bucket
}
При заполнении bucket'a создаётся overflow bucket, что может снижать производительность. Оптимизации в Go 1.17+ улучшили работу с bucket'ами, уменьшив частоту создания overflow.