Rumah >pembangunan bahagian belakang >Golang >Go Structs: Apakah Perbezaan Antara `struct{}` dan `struct{}{}?`

Go Structs: Apakah Perbezaan Antara `struct{}` dan `struct{}{}?`

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-08 16:05:12710semak imbas

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

struct dalam Go: struct{} dan struct{}{} Demystified

In Go, struct ialah binaan berkuasa yang digunakan untuk mentakrifkan data jenis. Walau bagaimanapun, terdapat dua kes khas struct yang patut diperiksa: struct{} dan struct{}.

struct{}: The Zero-Element Struct

struct{} ialah jenis struct tanpa unsur bernama. Ia berfungsi untuk beberapa tujuan berguna:

  • Bersaiz sifar: Nilai struct{} tidak menduduki sebarang memori, menjadikannya amat berguna untuk senario yang cekap ruang.

Penggunaan:

var emptyStruct struct{}

struktur{}: Literal Komposit Kosong

struct{}{} ialah literal komposit yang membina nilai struct kosong. Literal komposit membenarkan nilai permulaan yang ringkas bagi jenis tertentu. Untuk struct{}, sintaksnya mudah:

var emptyStructValue = struct{}{}

Penggunaan dalam Pelaksanaan Set

Satu aplikasi praktikal struct kosong ialah mencipta data seperti set struktur menggunakan peta Go. Memandangkan peta hanya membenarkan kunci unik, kita boleh menggunakan struct{} sebagai jenis nilai untuk mencipta satu set elemen unik tanpa menyimpan sebarang nilai:

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)
}

Kesimpulan

struct{} dan struct{}{} menawarkan ciri unik yang memanjangkan utiliti sistem struct Go. Struktur elemen sifar menyediakan kecekapan memori, manakala literal komposit kosong membantu dalam mencipta nilai struct kosong atau membina struktur data seperti set.

Atas ialah kandungan terperinci Go Structs: Apakah Perbezaan Antara `struct{}` dan `struct{}{}?`. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn