Комментарии 16
Все же хешмап по дефолту unordered, а не потому, что там "fastrand" воткнули.
Все, что "ordered", например, как в PHP, говорит лишь о том, что у нас не одна структура (хешмап), а две (хешмап отдельно, связанный список отдельно).
вы хотели сказать согласно спецификации unordered, или что значит "по дефолту"?
Насколько я помню, в начальной реализации map в Go обход был "упорядоченный" (то есть, разработчики Go просто не парились об этом), но пришлось поменять (добавили fastrand для определния начала), чтобы пользователи не полагались на упорядоченность.
Спасибо, весьма занимательный пост, в особенности, наверное, для тех, кто ещё не прошёлся по указанным граблям самостоятельно.
Вообще, занятно вышло, что в языке без дженериков на уровне компилятора дженерики как бы даже и существуют — []T
, map[K]V
— с ограничениями на K
и chan T
.
Невозможно создать 2 переменные с 1 адресом, как в С++ например
Теперь мне даже интересно, как по мнению автора в плюсах можно создать две переменные, имеющие один адрес, без насилия над компилятором
Маппинга: map(key) → value
Поиска: lookup(key) → value
И там и там же вроде поиск значения по ключу?
Хэш таблицы в Go. Детали реализации