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

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

Mary-Kate Olsen
Lepaskan: 2024-12-08 16:05:12
asal
673 orang telah melayarinya

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{}
Salin selepas log masuk

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{}{}
Salin selepas log masuk

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)
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan