Was ist der Unterschied zwischen der zugeordneten Schnittstelle {} und der Typstruktur {}?

WBOY
Freigeben: 2024-02-06 09:00:05
nach vorne
892 Leute haben es durchsucht

Was ist der Unterschied zwischen der zugeordneten Schnittstelle {} und der Typstruktur {}?

Frageninhalt

Ich habe gerade gelesen, dass „map[Type]interface{} eine Zuordnung von Schlüsseln vom Typ „Type“ mit dem Wert „any“ angibt, also „interface{}“.

Ist das nicht fast dasselbe wie das Definieren einer Struktur, d. h. Typ Name struct{ key1; value1, ...., keyn: valuen}?

Was ist der Unterschied zwischen diesen beiden Arten der Zuordnung?

Ich habe https://www.digitalocean.com/community/tutorials/how-to-use-json-in-go gelesen, aber ich verstehe den Unterschied immer noch nicht.

Oder was ist der Unterschied zwischen map[type] interface{}, das wir allgemeiner definieren?

Wir definieren jedes Schlüssel-Wert-Paar durch die Struktur?

Definieren beide Methoden nur Objekte, die aus Schlüssel-Wert-Paaren bestehen?


Richtige Antwort


Strukturen und Karten sind unterschiedliche Datenstrukturen. Sie haben viele Unterschiede. Hier sind nur einige davon:

Strukturen haben eine feste Anzahl von Feldern, die einmalig deklariert werden und nicht geändert werden können.

3a15cefd8a1cc7ac8a7f27a0d3f9b13

Karte kann zur Laufzeit wachsen oder schrumpfen.

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

vector["z"] = 2.0
Nach dem Login kopieren

Sie können Karteneinträge durchlaufen.

for key, val := range vector {
    fmt.Println(key, val)
}
Nach dem Login kopieren

Strukturen unterstützen keine Iteration (es sei denn, Sie verwenden Reflektion).

Strukturfelder können Beschriftungen (zusätzliche Attribute) haben:

type User struct {
    Name          string    `json:"name"`
    Password      string    `json:"password"`
}
Nach dem Login kopieren

Map verfügt nicht über diese Funktion.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen der zugeordneten Schnittstelle {} und der Typstruktur {}?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage