首頁 > 後端開發 > Golang > Go 結構體:「struct{}」和「struct{}{}」有什麼不同?

Go 結構體:「struct{}」和「struct{}{}」有什麼不同?

Mary-Kate Olsen
發布: 2024-12-08 16:05:12
原創
657 人瀏覽過

Go Structs: What's the Difference Between `struct{}` and `struct{}{}?`

Go 中的結構:struct{} 和struct{}{} 揭秘

在Go 中,struct 是用來定義資料的強大構造類型。但是,結構體有兩種特殊情況值得研究:struct{} 和 struct{}。

struct{}:零元素結構

struct{}是沒有命名元素的結構型別。它有一些有用的用途:

  • 零大小: struct{} 值不佔用任何內存,這使得它對於節省空間的場景特別有用。

用法:

var emptyStruct struct{}
登入後複製

struct{}:空複合文字

struct{}{} 是構造空結構體值的複合文字。複合文字允許簡潔地初始化特定類型的值。對於struct{},語法很簡單:

var emptyStructValue = struct{}{}
登入後複製

集合實作中的使用

空結構的一個實際應用是建立類似集合的資料使用Go 映射的結構。由於映射只允許唯一鍵,因此我們可以使用struct{} 作為值類型來建立一組唯一元素,而不儲存任何值:

type Set map[string]struct{}

func main() {
    set := make(Set)
    set["foo"] = struct{}{}
    set["bar"] = struct{}{}

    _, ok := set["foo"]
    println("Is \"foo\" in the set?", ok)
}
登入後複製

結論

struct{} 和struct{}{} 提供了擴展Go 結構系統實用性的獨特功能。零元素結構提供記憶體效率,而空複合文字有助於建立空結構值或建構類似集合的資料結構。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板