Spe c: Типы структур:
Поле, объявленное с типом, но без явного имени поля, называется встроенным полем . Встроенное поле должно быть указано как имя типа T
или как указатель на имя типа, не являющееся интерфейсом *T
, а само T
не может быть указателем типа. Неквалифицированное имя типа действует как имя поля.
Нельзя встраивать тип, такой как map[int]string
, это анонимный тип. Spe c требует имя типа . Даже если бы вы могли встраивать это, оно содержит скобки, которые могли бы сделать его недопустимым в качестве идентификатора, и опять же, spe c говорит, что имя неквалифицированного типа действует как имя поля .
Просто создайте для него новый тип, который затем можно будет встроить:
type mymap map[int]string
type s struct {
mymap
}
Когда вы встраиваете тип в структуру, вы опускаете имя поля. Во второй попытке:
type myStruct struct {
mySlice []int
}
Вы не пропустили имя поля (это mySlice
), поэтому это не встраивание, это обычное именованное поле.