Спецификация Go сообщает :
Операторы сравнения == и! = (Операторы сравнения) должны быть полностью определены для операндов типа ключа;таким образом, тип ключа не должен быть структурой, массивом или фрагментом.Если тип ключа является типом интерфейса, эти операторы сравнения должны быть определены для значений динамического ключа;ошибка вызовет панику во время выполнения.
Я хочу создать карту значений хеш-функции, которые поступают из интерфейса Hash , который возвращает []byte
, но для которогомои хеши выполняются по тому же алгоритму (таким образом я знаю, что он будет вписываться в [16]byte
).Как я могу предоставить соответствующий интерфейс, чтобы тип map
позволял использовать []byte
или [16]byte
или некоторую их оболочку в качестве ключа?
В настоящее время мое использование вызывает следующую ошибку:
dupes := make(map[[16]byte][]string)
finddups.go:55: invalid map key type [16]uint8
Обновление (март 2012 г.): Go1 допускает [16]byte
в качестве типа ключа.