Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah perbezaan antara antara muka yang dipetakan {} dan struktur jenis {}?

Apakah perbezaan antara antara muka yang dipetakan {} dan struktur jenis {}?

WBOY
WBOYke hadapan
2024-02-06 09:00:05873semak imbas

Apakah perbezaan antara antara muka yang dipetakan {} dan struktur jenis {}?

Kandungan soalan

Saya baru sahaja membaca peta[Jenis]antaramuka{} menentukan peta kekunci jenis Jenis dengan nilai sebarang, iaitu antara muka{}.

Bukankah ini hampir sama dengan mentakrifkan struktur, iaitu taip Name struct{ key1; value1, ...., keyn: valuen}?

Apakah perbezaan antara dua jenis pemetaan ini?

Saya membaca https://www.digitalocean.com/community/tutorials/how-to-use-json-in-go tetapi saya masih tidak faham perbezaannya.

Atau apakah perbezaan antara antara muka[jenis] peta{} yang kami takrifkan dengan cara yang lebih umum?

Kami menentukan setiap pasangan nilai kunci melalui struktur?

Adakah kedua-dua kaedah hanya mentakrifkan objek yang terdiri daripada pasangan nilai kunci?


Jawapan betul


Struktur dan peta ialah struktur data yang berbeza. Mereka mempunyai banyak perbezaan. Berikut adalah beberapa sahaja:

Struktur mempunyai bilangan medan tetap, yang diisytiharkan sekali dan tidak boleh diubah.

3a15cefd8a1cc7ac8a7f27a0d3f9b13

Peta boleh berkembang atau mengecut pada masa jalan.

vector := map[string]float64{
    "x": 2.0,
    "y": 2.0,
}

vector["z"] = 2.0

Anda boleh mengulangi entri peta.

for key, val := range vector {
    fmt.Println(key, val)
}

Struktur tidak menyokong lelaran (melainkan anda menggunakan refleksi).

Medan struktur boleh mempunyai label (atribut tambahan):

type User struct {
    Name          string    `json:"name"`
    Password      string    `json:"password"`
}

Map tidak mempunyai ciri ini.

Atas ialah kandungan terperinci Apakah perbezaan antara antara muka yang dipetakan {} dan struktur jenis {}?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam