在 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