Heim > Backend-Entwicklung > Golang > Was ist eine Karte in der Go-Sprache?

Was ist eine Karte in der Go-Sprache?

王林
Freigeben: 2023-06-09 21:06:05
Original
885 Leute haben es durchsucht

Go-Sprache ist eine Open-Source-Programmiersprache, die von Google entwickelt wurde und häufig in Hochleistungs- und Großprojekten verwendet wird. Unter diesen ist die Karte in der Go-Sprache ein sehr wichtiger Datentyp, der in verschiedenen Arten der Entwicklung weit verbreitet ist. In diesem Artikel wird erläutert, was eine Karte in der Go-Sprache ist und wie man sie verwendet.

1. Was ist Karte? In der Go-Sprache ist Karte eine Datenstruktur ähnlich einer Hash-Tabelle. Eine Karte ist ungeordnet und besteht aus einer Reihe von Schlüssel-Wert-Paaren, wobei jeder Schlüssel nur einmal vorkommt. Die Schlüssel in der Karte müssen Datentypen sein, die den Gleichheitsvergleich unterstützen, z. B. Zeichenfolgen, Zahlen, Bool usw. Der Wert kann jede Art von Daten sein, z. B. Zeichenfolgen, Zahlen, Strukturen, Slices usw.

Die Deklaration einer Karte in der Go-Sprache erfordert die Verwendung der Make-Funktion, wie unten gezeigt:

var mapName = make(map[keyType]valueType)
Nach dem Login kopieren

wobei „mapName“ der Variablenname der Karte ist, „keyType“ der Typ des Schlüssels und „valueType“ der Typ des Werts . Beispielsweise können wir eine Karte mit dem Schlüsseltyp „String“ und dem Werttyp „Int“ deklarieren, wie unten gezeigt:

var myMap = make(map[string]int)
Nach dem Login kopieren

2. Kartenoperationen

Elemente hinzufügen
  1. Um der Karte Elemente hinzuzufügen, müssen Sie Folgendes tun Verwenden Sie für die Zuweisung Zuweisungssymbole, wie unten gezeigt:
myMap["one"] = 1
myMap["two"] = 2
Nach dem Login kopieren

Im obigen Beispiel haben wir zwei Schlüssel-Wert-Paare zu myMap hinzugefügt, wobei die Schlüssel „eins“ und „zwei“ sind und die entsprechenden Werte 1 und 2 sind.

Elemente abrufen
  1. Um Elemente in der Karte abzurufen, können Sie den Indexoperator [] verwenden, wie unten gezeigt:
value := myMap["one"]
Nach dem Login kopieren

Im obigen Beispiel verwenden wir den Indexoperator [], um den mittleren Schlüssel von myMap als abzurufen „eins“ „Der Wert wird in der Variable value gespeichert.

Es ist zu beachten, dass der dem Werttyp entsprechende Nullwert zurückgegeben wird, wenn der Schlüssel nicht in der Karte vorhanden ist. Wenn wir beispielsweise einen Schlüssel erhalten, der nicht existiert, wie folgt:

value := myMap["three"]
Nach dem Login kopieren

, dann ist der Wert der Variablen value der Nullwert 0 vom Typ int.

Elemente ändern
  1. Um Elemente in der Karte zu ändern, können Sie den Indexoperator [] direkt verwenden, um Werte zuzuweisen, wie unten gezeigt:
myMap["one"] = 100
Nach dem Login kopieren

Im obigen Beispiel haben wir den Schlüssel in myMap auf „eins“ gesetzt. Der Wert wird auf 100 geändert.

Elemente löschen
  1. Um Elemente aus einer Karte zu löschen, können Sie die Löschfunktion in der Go-Sprache verwenden, wie unten gezeigt:
delete(myMap, "one")
Nach dem Login kopieren

Im obigen Beispiel haben wir das Element mit der Taste „one“ aus myMap gelöscht.

Ermitteln Sie die Länge der Karte
  1. Um die Länge der Karte zu erhalten, können Sie die Len-Funktion in der Go-Sprache verwenden, wie unten gezeigt:
length := len(myMap)
Nach dem Login kopieren

Im obigen Beispiel erhalten wir die Länge von myMap und Speichern Sie es in der variablen Länge.

3. Die Karte durchqueren

Es gibt viele Möglichkeiten, die Karte zu durchqueren. Die häufigste Methode ist die Verwendung einer for-Schleife, wie unten gezeigt:

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

Im obigen Beispiel durchqueren wir alle Schlüssel-Wert-Paare in myMap, und Sie werden an die Konsole ausgegeben.

Es ist zu beachten, dass die Karte während des Durchlaufs ungeordnet ist und die Reihenfolge der bei jedem Durchlauf zurückgegebenen Schlüssel-Wert-Paare zufällig ist.

4. Funktionen der Karte

Thread-Sicherheit
  1. Standardmäßig ist die Karte nicht threadsicher. Wenn mehrere Threads gleichzeitig dieselbe Karte ändern, kommt es zu Datenwettbewerb und Dateninkonsistenz. Um dieses Problem zu lösen, stellt die Go-Sprache das Sync-Paket bereit, in dem der Typ sync.Map eine threadsichere Karte implementieren kann.

Vergleichsoperatoren werden nicht unterstützt
  1. Der Schlüsseltyp der Karte muss Gleichheitsvergleichsoperatoren wie Zeichenfolgen, Zahlen, Bool usw. unterstützen, aber Typen wie Slices und Strukturen in der Go-Sprache unterstützen keine Gleichheitsvergleichsoperatoren. Wenn Sie diese Typen als Schlüssel in einer Karte verwenden möchten, können Sie Zeiger verwenden oder eine benutzerdefinierte Vergleichsfunktion schreiben.

Dynamische Skalierung
  1. Die zugrunde liegende Implementierung der Karte ist eine Hash-Tabelle. Wenn die Elemente in der Karte zunehmen oder abnehmen, wird auch die zugrunde liegende Hash-Tabelle dynamisch skaliert. Dieser Prozess reserviert mehr Speicher und berechnet den Hash-Wert neu. Daher wird die Leistung von Kartenoperationen beeinträchtigt, wenn große Datenmengen verarbeitet werden.

Fazit

In diesem Artikel haben wir die Karte in der Go-Sprache vorgestellt, einen sehr wichtigen Datentyp, der in verschiedenen Arten der Entwicklung weit verbreitet ist. Wir haben gelernt, was eine Karte ist, wie man eine Karte bedient und welche Eigenschaften sie hat. Ich hoffe, dass die Leser durch die Einleitung dieses Artikels ein tiefgreifendes Verständnis der Karten in der Go-Sprache erlangen und dabei helfen können, effizientere und stabilere Anwendungen zu entwickeln.

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

Verwandte Etiketten:
Quelle:php.cn
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