Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist eine Karte in Golang?

Was ist eine Karte in Golang?

青灯夜游
青灯夜游Original
2023-01-13 11:07:133881Durchsuche

Karte ist eine spezielle Datenstruktur in Form von Schlüssel (Index) und Wert (Wert). Sie kann auch als assoziatives Array oder Wörterbuch bezeichnet werden Die ideale Struktur ist eine Datenstruktur, die anhand eines bestimmten Schlüssels schnell den entsprechenden Wert finden kann.

Was ist eine Karte in Golang?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, GO Version 1.18, Dell G3-Computer.

In der Go-Sprache ist Map eine spezielle Datenstruktur, eine ungeordnete Sammlung von Elementpaaren (Paar), die einem Schlüssel (Index) und einem Wert (Wert) entspricht, daher wird diese Struktur auch als assoziatives Array oder Wörterbuch bezeichnet. Dies ist eine ideale Struktur, mit der Werte schnell gefunden werden können. Bei gegebenem Schlüssel kann der entsprechende Wert schnell gefunden werden.

Der Schlüssel der Golang-Karte kann ein beliebiger Datentyp sein, der mit == verglichen werden kann, z. B. int, string, bool usw., und der Wert kann ein beliebiger Typ sein.

map ist eine ungeordnete Datenstruktur, daher kann bei jedem Durchlaufen dieselbe Karte in einer inkonsistenten Reihenfolge erhalten werden.

Kartenkonzept

Karte ist ein Referenztyp und kann auf folgende Weise deklariert werden:

var mapname map[keytype]valuetype

wobei:

  • Kartenname ist der Variablenname der Karte.

  • keytype ist der Schlüsseltyp.

  • Werttyp ist der Werttyp, der dem Schlüssel entspricht.

Tipp: Zwischen [keytype] und valuetype sind Leerzeichen erlaubt.

Sie müssen die Länge der Karte nicht kennen, wenn Sie sie deklarieren, da die Karte dynamisch wachsen kann. Der Wert einer nicht initialisierten Karte ist Null. Sie können die Funktion len() verwenden, um die Anzahl der Paare zu ermitteln die Karte.

【Beispiel】

package main
import "fmt"
func main() {
    var mapLit map[string]int
    //var mapCreated map[string]float32
    var mapAssigned map[string]int
    mapLit = map[string]int{"one": 1, "two": 2}
    mapCreated := make(map[string]float32)
    mapAssigned = mapLit
    mapCreated["key1"] = 4.5
    mapCreated["key2"] = 3.14159
    mapAssigned["two"] = 3
    fmt.Printf("Map literal at \"one\" is: %d\n", mapLit["one"])
    fmt.Printf("Map created at \"key2\" is: %f\n", mapCreated["key2"])
    fmt.Printf("Map assigned at \"two\" is: %d\n", mapLit["two"])
    fmt.Printf("Map literal at \"ten\" is: %d\n", mapLit["ten"])
}

Ausgabeergebnis:

Was ist eine Karte in Golang?

Im Beispiel demonstriert MapLit die Verwendung des Formats {key1: value1, key2: value2}, um die Karte zu initialisieren, genau wie Arrays und Strukturen.

Wie die im obigen Code erstellte Karte erstellt wirdmapCreated := make(map[string]float)等价于mapCreated := map[string]float{}.

mapAssigned ist ein Verweis auf mapList, und Änderungen an mapAssigned wirken sich auch auf den Wert von mapLit aus.

Hinweis: Sie können make() verwenden, aber Sie können new() nicht zum Erstellen einer Karte verwenden. Wenn Sie new() falsch verwenden, um ein Referenzobjekt zuzuweisen, erhalten Sie einen Null-Referenzzeiger, was der Deklaration von an entspricht nicht initialisierte Variable. Und nehmen Sie ihre Adresse:

mapCreated := new(map[string]float)

Als nächstes meldet der Compiler einen Fehler, wenn wir mapCreated["key1"] = 4.5 aufrufen:

invalid operation: mapCreated["key1"] (index of type *map[string]float).

Map-Kapazität

unterscheidet sich von Arrays, Map kann auf neuen basieren Der hinzugefügte Schlüsselwert wird dynamisch skaliert, sodass er keine feste Länge oder maximale Grenze hat. Sie können jedoch auch die anfängliche Kapazität der Karte angeben. Das Format lautet wie folgt:

make(map[keytype]valuetype, cap)

Zum Beispiel:

map2 := make(map[string]float, 100)

Wenn die Karte die obere Kapazitätsgrenze erreicht und ein neuer Schlüsselwert hinzugefügt wird, wird die Größe der Karte automatisch um 1 erhöht. Aus Leistungsgründen gilt daher für große Karten oder Karten, die sich schnell erweitern, Auch wenn die Kapazität nur ungefähr bekannt ist, ist es am besten, sie zuerst anzugeben.

Hier ist ein konkretes Beispiel einer Karte, die Musikskalen den entsprechenden Audiodateien zuordnet:

noteFrequency := map[string]float32 {
"C0": 16.35, "D0": 18.35, "E0": 20.60, "F0": 21.83,
"G0": 24.50, "A0": 27.50, "B0": 30.87, "A4": 440}

[Verwandte Empfehlungen: Go-Video-Tutorial, Programmierunterricht]

Das obige ist der detaillierte Inhalt vonWas ist eine Karte in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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