При инициализации структур в Go использование круглых скобок не обязательно, но в определенных ситуациях может быть предпочтительнее.
Обычно, структура инициализируется с использованием фигурных скобок, как показано в:
item1 := Item{1, "Foo"}
Однако в равной степени можно инициализировать структуру круглыми скобками:
item2 := (Item{2, "Bar"})
Обе строки создают экземпляры структуры Item и присваивают их элементам item1 и item2 соответственно. Отражение обеих структур вернет одно и то же имя.
Круглые скобки в первую очередь служат для устранения неоднозначности синтаксиса при использовании инициализации структуры внутри оператора if. Без круглых скобок следующий код приведет к ошибке компиляции:
if i := Item{3, "a"}; i.Id == 3 {
}
Компилятор не может определить, принадлежит ли открывающая скобка составному литералу или телу оператора if. Добавление круглых скобок устраняет эту двусмысленность:
if i := (Item{3, "a"}); i.Id == 3 {
}
В этом случае круглые скобки явно указывают, что составной литерал — это значение, присвоенное i. Дополнительные сведения см. на странице «Структура инициализатора цикла for».
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3