Ответ 1
Встраиваемые типы представляют собой (неназванные) поля, на которые ссылается неквалифицированное имя типа.
Поле, объявленное с типом, но не явным именем поля, является анонимным полем, также называемым встроенным полем или вложением типа в структуре. Вложенный тип должен быть указан как имя типа
T
или как указатель на имя типа без интерфейса*T
, а самT
может не быть типом указателя. Неквалифицированное имя типа действует как имя поля.
Итак, попробуйте:
e := ErrorValue{NamedValue: NamedValue{Name: "fine", Value: 33}, Error: err}
Также работает, если вы опускаете имена полей в составном литерале:
e := ErrorValue{NamedValue{"fine", 33}, err}
Попробуйте примеры на Go Playground.