Ваше отображение JSON to Go неверно.Чтобы иметь автоматическое соответствие между полями структуры и свойствами JSON во время процесса демаршалинга, поле names (а не имя их типов) должно соответствовать свойствам в JSON (с учетом регистра):
type FirstName struct {
FirstName string
}
type SecondName struct {
SurName string
}
type Person struct {
Details FirstName
MoreDetails SecondName
}
При этом вывод (попробуйте на Go Playground ):
{{alan} {Turing}}
Если вы хотите сохранить эти имена в Go, другойможно указать отображение между полями структуры Go и именами свойств JSON.Для этого вы можете использовать struct tags :
type FirstName struct {
Name1 string `json:"firstName"`
}
type SecondName struct {
Name2 string `json:"surName"`
}
Вывод будет таким же.Попробуйте это на Go Playground .
Для ознакомления и получения дополнительной информации о тегах структуры см. Как использовать теги в Go?