Von der Spezifikation:
Ein eingebetteter Typ als Typname T angegeben werden muss oder als Zeiger auf einen nicht-Interface-Typen Namen * T und T selbst darf kein Zeigertyp sein.
Sie sehen, dass es einen "Typnamen" erwähnt.
Benannte Typen werden durch einen (möglicherweise qualifizierten) Typnamen angegeben; unbenannte Typen werden mit einem Typliteral angegeben, das aus vorhandenen Typen einen neuen Typ zusammensetzt.
Mit anderen Worten, eine Zuordnung oder ein Slice darf nicht anonym sein, es sei denn, sie sind als benannter Typ definiert. Zum Beispiel:
type MyMap map[string]string
type customMap struct{
MyMap
ordered []string
}
Aber auch wenn Sie MyMap oder eine Scheibe Art einbetten, würden Sie noch nicht zu indizieren customMap können. Nur Felder und Methoden können beim Einbetten "befördert" werden. Für alles andere sind sie nur ein weiteres Feld. In dem obigen Beispiel hat MyMap keine Felder oder Methoden und somit entspricht:
type customMap struct{
MyMap MyMap
ordered []string
}
Sie hier sehen können (http://stackoverflow.com/a/26194639/6309) einen weiteren Versuch in eine Einbettung unbenannter Typ Es ist auch gescheitert. – VonC