首頁 > 後端開發 > Golang > 主體

Go 中的匿名結構:何時使用 `struct{}{} 與 {}`?

Linda Hamilton
發布: 2024-11-02 07:01:02
原創
302 人瀏覽過

 Anonymous Structs in Go: When to Use `struct{}{} vs. {}`?

了解匿名結構中 struct{}{} 和 {} 的差異

在 Go 中,映射可以將字串與自訂匿名結構關聯起來。此類映射的聲明可能會在 Gogland 等 IDE 中觸發「冗餘類型聲明」警告。這就提出了 struct{}{} 和 {} 宣告之間差異的問題。

語法解釋

struct{}{} 語法表示一個複合文字,包括類型 (struct{}) 和值 ({})。另一方面,{} 也是複合文字,但它省略了型別。

編譯器影響

一般來說,複合文字需要指定型別。但是,在宣告映射時,鍵和值的類型是從映射類型推斷出來的。因此,如果複合文字值與這些推斷類型匹配,則在分配複合文字值時可以省略類型。

根據複合文字規範,此異常是在 Go 1.5 中引入的。它消除了在某些情況下明確指定類型的需要,從而簡化了程式碼。

為了說明這一點,請考慮以下匿名結構體賦值:

<code class="go">var Foo = map[string]struct{}{
    "foo": struct{}{},
}</code>
登入後複製

Gogland 可能會警告冗餘類型聲明。您可以使用以下語法來解決它:

<code class="go">var Foo = map[string]struct{}{
    "foo": {},
}</code>
登入後複製

此語法省略了類型 struct{},因為類型是從分配的值推斷出來的。

總而言之, struct{}{} 和 {} 的區別是前者在複合文字中明確包含類型,而後者則省略它,依賴於封閉映射聲明的類型推斷。

以上是Go 中的匿名結構:何時使用 `struct{}{} 與 {}`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!