Смесь полей: значения и инициализаторы стоимости

Почему я не могу создать следующее с анонимным полем?

type T1 struct {
    T1_Text string
}

type T2 struct {
    T2_Text string
    T1
}

используется в func..

t := T2{
    T2_Text: "Test",
    T1{T1_Text: "Test"},
}

Дает мне: смесь полей: значения и инициализаторы значений?

Ответы

Ответ 1

Краткое объяснение.

Поводом для этого является то, что вам разрешено использовать только один из двух типов инициализаторов, а не оба.

то есть. вы можете использовать значение : значение или .

Используя ваш пример, вы либо выполняете

поле: значение

t := T2{
    T2_Text: "Test",
    T1: T1{T1_Text: "Test"},
}

или только значения

t := T2{
    "Test",
    T1{"Test"},
}

Надеюсь, что объясняет, почему

Ответ 2

Отсутствует имя атрибута T1 для назначения.

t := T2{
    T2_Text: "Test",
    T1:      T1{T1_Text: "Test"},
}

P.S. Просто переместил комментарий @twwwwwo к ответу.