Rumah > pembangunan bahagian belakang > Golang > Struktur Kosong atau Antara Muka Kosong: Manakah Nilai Peta yang Lebih Baik dalam Go?

Struktur Kosong atau Antara Muka Kosong: Manakah Nilai Peta yang Lebih Baik dalam Go?

Susan Sarandon
Lepaskan: 2024-12-01 03:32:13
asal
466 orang telah melayarinya

Empty Struct or Empty Interface: Which is the Better Map Value in Go?

Antara Muka Kosong lwn. Struktur Kosong sebagai Nilai Peta

Dalam Go, peta digunakan untuk menyimpan pasangan nilai kunci. Jenis nilai peta boleh terdiri daripada sebarang jenis, termasuk antara muka atau struct. Walaupun antara muka kosong dan struct kosong boleh digunakan untuk mewakili ketiadaan nilai dalam peta, terdapat beberapa perbezaan utama antara keduanya.

Penggunaan Memori

Struktur kosong mempunyai saiz tetap 0 bait, tanpa mengira seni bina. Sebaliknya, antara muka kosong mempunyai saiz 8 bait pada seni bina 32-bit dan 16 bait pada seni bina 64-bit. Ini kerana antara muka kosong menyimpan penunjuk kepada nilai sebenar, walaupun jika nilai itu adalah sifar.

Kod contoh yang disediakan dalam soalan menunjukkan perbezaan ini:

package main

import (
    "fmt"
    "unsafe"
)

func main() {
    var s struct{}
    fmt.Println(unsafe.Sizeof(s))
    var i interface{}
    fmt.Println(unsafe.Sizeof(i))
    var b bool
    fmt.Println(unsafe.Sizeof(b))
}
Salin selepas log masuk

Output (bait untuk seni bina 32-bit):

0
8
1
Salin selepas log masuk

Output (bait untuk Seni bina 64-bit):

0
16
1
Salin selepas log masuk

Seperti yang anda lihat, struct kosong mempunyai overhed memori sebanyak 0 bait, manakala antara muka kosong mempunyai overhed 8 bait (32-bit) atau 16 bait (64-bit).

Prestasi

Menggunakan struct kosong secara amnya lebih cekap daripada menggunakan antara muka kosong dari segi prestasi. Ini kerana pengkompil boleh mengoptimumkan operasi yang melibatkan struct kosong dengan lebih berkesan.

Kesimpulan

Memilih antara antara muka kosong dan struct kosong kerana jenis nilai peta bergantung mengenai keperluan khusus permohonan. Jika penggunaan memori menjadi kebimbangan, struct kosong adalah pilihan yang lebih baik. Atas sebab prestasi, struct kosong juga diutamakan. Walau bagaimanapun, jika peta bertujuan untuk digunakan dengan pelbagai jenis nilai, antara muka kosong mungkin lebih sesuai.

Atas ialah kandungan terperinci Struktur Kosong atau Antara Muka Kosong: Manakah Nilai Peta yang Lebih Baik dalam Go?. 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