首頁 > 後端開發 > Golang > Go 中空結構體(struct{} 和 struct{}{})的用途和屬性是什麼?

Go 中空結構體(struct{} 和 struct{}{})的用途和屬性是什麼?

Mary-Kate Olsen
發布: 2024-12-17 17:46:10
原創
135 人瀏覽過

What are the Uses and Properties of Empty Structs (`struct{}` and `struct{}{}`) in Go?

理解Go 中的空結構體:struct{} 和struct{}{}

Go 中,struct 關鍵字定義了一個結構化資料由命名元素組成的類型。然而,在慣用的 Go 程式碼中經常遇到的 struct{} 和 struct{}{} 值得特別注意。

struct{}:一個空結構體

結構體{} 是一種特殊情況,表示沒有元素的空結構。它具有大小為零的獨特屬性,這意味著不會為該類型的值分配記憶體。

struct{}{} 作為複合文字

相較之下,struct{}{} 的寫法與int{5} 或[]string{"Go ", "Python"} 類似,是一個複合文字,明確建構型別的值結構{}。該文字沒有字段,因為 struct{} 沒有定義的元素。

空結構的應用

空結構可以在Go 程式碼中找到各種用途:

  • 作為地圖值中的「佔地圖值中的「佔地圖值中的「佔地圖值中的「佔地圖值中的「佔地圖值中的「佔地圖值」位元符」:當使用地圖儲存一組(唯一的集合)元素),將值類型設為struct{}可確保僅儲存鍵(元素),而不會在關聯值上浪費空間。
  • 作為結構中的欄位:空結構可以在結構中提供額外的填充更大的結構,確保特定架構的某些對齊要求。

範例:使用空白建立集合Struct

以下是使用具有空結構值類型的對應來建立集合的範例:

package main

import "fmt"

type Set map[string]struct{}

func main() {
    s := make(Set)
    s["red"] = struct{}{}
    s["blue"] = struct{}{}

    fmt.Println(s)  // Prints: map[blue:{} red:{}]
}
登入後複製

請注意,此方法僅檢查鍵是否存在,而不檢查它們的相關值。

以上是Go 中空結構體(struct{} 和 struct{}{})的用途和屬性是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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