Преобразование фрагмента структур в фрагмент пустого интерфейса - PullRequest
4 голосов
/ 03 февраля 2012

Я пытаюсь назначить фрагмент структур для фрагмента []interface{} (для передачи в datastore.PutMulti AppEngine. Однако это вызывает ошибки компиляции, так как эти два типа явно несовместимы:
cannot use type[]*MyStruct as type []interface { } in assignment

В основном у меня есть:

var src []*MyStruct
var dest []interface{}
…
dest = src  // This line fails.

Есть ли способ скопировать src в dest, не копируя каждый элемент по одному?

1 Ответ

6 голосов
/ 03 февраля 2012

Вам придется копировать по одному. Обойти это невозможно.

Если это помогает принять это, вам следует подумать о том, что обертывание структуры в интерфейсе действительно оборачивает ее на уровне памяти. Интерфейс содержит указатель на исходный тип и дескриптор для самого типа. При приведении единственной структуры к интерфейсу вы действительно ее оборачиваете. Поэтому копирование их по одному необходимо для того, чтобы обернуть структуры в интерфейсе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...