Вот правила присвоения
В данном конкретном случае ни один из них не удерживается, поэтому типы нельзя назначать.
Учитывая, что вы упомянули, этот ответ недостаточно подробен - давайте разберем все правила присваивания: (для простоты давайте используем A
вместо []uint8
и B
вместо []Word
)
- тип x идентичен T. --- Нет,
A
не идентичен B
- Типы x и V имеют идентичные базовые типы, и по крайней мере один из V или T не является определенным типом. --- Нет, оба являются определенными типами
- T - это тип интерфейса, а x реализует T. --- Ни один из них не является интерфейсом
- x - это значение двунаправленного канала, T - тип канала, x-типы V и T имеют идентичные типы элементов, и, по крайней мере, один из V или T не является определенным типом. --- Ни один из них не является каналом
- x - это предварительно объявленный идентификатор nil, а T - указатель, функция, срез, карта, канал или тип интерфейса. --- Ни один из них не имеет
nil
значения
- x является нетипизированной константой, представляемой значением типа T. --- Нет, константы не включены
Итак, как вы можете видеть - нет никакого способа, которым A
можно присвоить B
.
Если вы объявите Память как type Memory []uint8
, она будет работать (как упомянуто в комментариях @ RayfenWindspear ), но я уверен, что корни вопроса скорее в том, «почему», а не «как исправить».