Karten in Go sind ein integrierter assoziativer Datentyp, mit dem Sie Schlüsselwertpaare speichern können. Sie werden als Hash -Tabellen implementiert und bieten einen effizienten Zugriff auf die darin gespeicherten Werte. Karten sind nicht ordnungsgemäß, was bedeutet, dass sich die Reihenfolge von Schlüssel und Werten während der Programmausführung ändern kann.
Um eine Karte in GO zu erstellen, verwenden Sie die Funktion make
-Funktion mit dem map
. Die Syntax für die Erklärung einer Karte lautet wie folgt:
<code class="go">myMap := make(map[keyType]valueType)</code>
Hier ist keyType
der Typ der Schlüssel, und valueType
ist der Typ der Werte. Zum Beispiel, um eine Karte von Saiten für Ganzzahlen zu erstellen:
<code class="go">ages := make(map[string]int)</code>
Sie können auch eine Karte mit Werten zum Zeitpunkt der Deklaration mit einem zusammengesetzten Literal initialisieren:
<code class="go">ages := map[string]int{ "Alice": 30, "Bob": 25, }</code>
Um einer Karte ein Schlüsselwertpaar hinzuzufügen, verwenden Sie die folgende Syntax:
<code class="go">ages["Charlie"] = 35</code>
Um einen Wert aus einer Karte abzurufen, verwenden Sie den Schlüssel:
<code class="go">age := ages["Alice"]</code>
Wenn Sie versuchen, einen Wert für einen Schlüssel abzurufen, der in der Karte nicht vorhanden ist, erhalten Sie den Nullwert für den Werttyp. Um zu überprüfen, ob ein Schlüssel vorhanden ist, bevor Sie auf seinen Wert zugreifen, können Sie die Mehrwertzuordnung verwenden:
<code class="go">age, exists := ages["David"] if !exists { fmt.Println("David is not in the map") }</code>
Um ein Schlüsselwertpaar aus einer Karte zu löschen, verwenden Sie die Funktion delete
:
<code class="go">delete(ages, "Bob")</code>
Die Verwendung von Karten in Go -Programmierung bietet mehrere wichtige Vorteile:
len
zu arbeiten, um die Anzahl der Einträge zu erhalten, und um Einträge zu delete
. Um eine Karte in GO effizient zu iterieren, können Sie das range
in A for
Loop verwenden. Mit dem Schlüsselwort range
können Sie sowohl auf den Schlüssel als auch auf den Wert jedes Eintrags in der Karte zugreifen. Hier ist ein Beispiel:
<code class="go">ages := map[string]int{ "Alice": 30, "Bob": 25, "Charlie": 35, } for key, value := range ages { fmt.Printf("Name: %s, Age: %d\n", key, value) }</code>
Dies wird über alle Schlüsselwertpaare in der Karte iteriert und jeden Namen und jeden Alter ausgedrucken. Beachten Sie, dass die Reihenfolge, in der die Schlüsselwertpaare besucht werden, nicht garantiert ist, da die Karten von Natur aus nicht ordnungsgemäß sind.
Wenn Sie nur die Tasten iterieren müssen, können Sie die folgende Syntax verwenden:
<code class="go">for key := range ages { fmt.Printf("Name: %s\n", key) }</code>
Wenn Sie nur die Werte iterieren müssen, können Sie die Leer -Kennung _
für den Schlüssel verwenden:
<code class="go">for _, value := range ages { fmt.Printf("Age: %d\n", value) }</code>
Bei der Arbeit mit Karten in Go gibt es mehrere häufige Fehler, die vermieden werden sollten:
Nicht nach der wichtigsten Existenz überprüfen : Wenn Sie einen Wert von einer Karte abrufen, ist es leicht zu vergessen zu überprüfen, ob der Schlüssel vorhanden ist. Wenn Sie dies nicht tun, kann dies dazu führen, dass unerwartete Nullwerte in Ihrem Code verwendet werden.
<code class="go">// Incorrect age := ages["David"] // If "David" doesn't exist, age will be 0 // Correct age, exists := ages["David"] if !exists { fmt.Println("David is not in the map") }</code>
Concurrent schreibt : Schreiben auf eine Karte aus mehreren Goroutinen ohne ordnungsgemäße Synchronisation kann zu Rassenbedingungen und undefiniertem Verhalten führen.
<code class="go">// Incorrect go func() { ages["Eve"] = 40 }() go func() { ages["Frank"] = 45 }() // Correct var mutex sync.Mutex go func() { mutex.Lock() ages["Eve"] = 40 mutex.Unlock() }() go func() { mutex.Lock() ages["Frank"] = 45 mutex.Unlock() }()</code>
Die Verwendung nicht vergleichbarer Typen als Schlüssel : Karten müssen vergleichbar sind. Die Verwendung nicht vergleichbarer Typen wie Schnitte oder Karten als Schlüssel führt zu einem Kompilierungsfehler.
<code class="go">// Incorrect invalidMap := make(map[[]int]int) // Will not compile // Correct validMap := make(map[string]int)</code>
Übersehen von Karteninitialisierung : Der Versuch, eine Karte ohne ordnungsgemäße Initialisierung zu verwenden, führt zu einer Laufzeit -Panik.
<code class="go">// Incorrect var ages map[string]int ages["Alice"] = 30 // This will panic // Correct ages := make(map[string]int) ages["Alice"] = 30</code>
Indem Sie diese häufigen Fehler vermeiden, können Sie Karten effektiv und sicher in Ihren GO -Programmen verwenden.
Das obige ist der detaillierte Inhalt vonWas sind Karten in Go? Wie erstellen und verwenden Sie sie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!