首頁 >後端開發 >Golang >Go Maps 中的匿名結構:`struct{}{}` 和 `{}` 有什麼不同?

Go Maps 中的匿名結構:`struct{}{}` 和 `{}` 有什麼不同?

DDD
DDD原創
2024-10-30 03:55:03513瀏覽

 Anonymous Struct in Go Maps: What's the Difference Between `struct{}{} `and `{}`?

匿名結構:深入研究struct{}{} 和{} 之間的差異

問題:

Go中,在映射聲明中使用匿名結構體作為值會引發Gogland 警告,並提出問題:在這種上下文中struct{}{} 和{} 聲明之間有什麼區別?

答案:

理解這兩種語法背後的語意至關重要。

分解聲明

  • struct{}{}:這是複合字面量,由匿名結構類型 struct{} 和值 {} 組成。
  • {}:這也是一個複合字面量,僅表示值 {},而沒有明確表示指定其類型。

型別推論與複合文字

通常,複合文字需要明確型別宣告(例如,[]int{1, 2, 3})。但是,在使用映射時,編譯器可以從映射類型本身推斷鍵和值的類型。這允許簡化複合文字語法,在提供適當類型的值時省略類型聲明。

Go 規範和監督

根據 Go 規範,在這些情況下,當複合文字的類型與映射期望的類型匹配時,可以省略類型聲明。此行為最初是一個疏忽,但在 Go 1.5 中成為有效功能。

注意: 初始化其他類型的複合文字(例如陣列、切片)時,不能省略型別宣告。

以上是Go Maps 中的匿名結構:`struct{}{}` 和 `{}` 有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn