


Wie kann ich benutzerdefinierte Schlüsselgleichheit für Go Maps implementieren?
Benutzerdefinierte Schlüsselgleichheit für Go-Karten
Beim Erstellen einer Karte in Go können Sie jeden Typ als Schlüssel verwenden, solange er implementiert ist die vergleichbare Schnittstelle. Standardmäßig verwendet Go den integrierten Gleichheitsoperator (==) zum Vergleichen von Schlüsseln. Es kann jedoch Fälle geben, in denen Sie Ihre eigenen Gleichheitskriterien definieren möchten.
Beispiel
Betrachten Sie den folgenden benutzerdefinierten Schlüsseltyp:
type Key struct { a *int }
Um zwei Instanzen von Key zu vergleichen, möchten Sie Ihr eigenes Equal verwenden Funktion:
func Equal(x Key, y Key) bool { return *x.a == *y.a }
Problemumgehung
Leider erlaubt Ihnen Go nicht, benutzerdefinierte Hashing- oder Gleichheitsfunktionen für Kartenschlüssel anzugeben. Stattdessen können Sie die folgende Problemumgehung verwenden:
- Leiten Sie ein Schlüsselattribut ab:Anstatt die Schlüsselstruktur direkt als Schlüssel zu verwenden, leiten Sie ein Attribut ab (z. B. eine Ganzzahl oder eine Zeichenfolge). das dient als Identität für den Schlüssel. Stellen Sie sicher, dass Kollisionen nur für semantisch identische Schlüssel auftreten.
- Hash-Funktion implementieren: Erstellen Sie eine Methode für Key, die das abgeleitete Attribut berechnet und es als Ganzzahl zurückgibt (für Hashing).
func (k *Key) HashKey() int { return *(*k).a }
Beispielverwendung
Verwendung des Im obigen Beispiel wäre die Karte:
k1, k2 := Key{intPtr(1)}, Key{intPtr(2)} m := map[int]string{} m[k1.HashKey()] = "one" m[k2.HashKey()] = "two"
Vorsichtsmaßnahmen
Bedenken Sie, dass dieser Ansatz auf der Unveränderlichkeit des abgeleiteten Schlüsselattributs beruht. Wenn sich Felder in der Schlüsselstruktur ändern, ändert sich die Identität des Schlüssels und er funktioniert nicht wie erwartet.
Das obige ist der detaillierte Inhalt vonWie kann ich benutzerdefinierte Schlüsselgleichheit für Go Maps implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



OpenSSL bietet als Open -Source -Bibliothek, die in der sicheren Kommunikation weit verbreitet sind, Verschlüsselungsalgorithmen, Tasten und Zertifikatverwaltungsfunktionen. In seiner historischen Version sind jedoch einige Sicherheitslücken bekannt, von denen einige äußerst schädlich sind. Dieser Artikel konzentriert sich auf gemeinsame Schwachstellen und Antwortmaßnahmen für OpenSSL in Debian -Systemen. DebianopensL Bekannte Schwachstellen: OpenSSL hat mehrere schwerwiegende Schwachstellen erlebt, wie z. Ein Angreifer kann diese Sicherheitsanfälligkeit für nicht autorisierte Lesen sensibler Informationen auf dem Server verwenden, einschließlich Verschlüsselungsschlüssel usw.

In dem Artikel wird erläutert, wie das PPROF -Tool zur Analyse der GO -Leistung verwendet wird, einschließlich der Aktivierung des Profils, des Sammelns von Daten und der Identifizierung gängiger Engpässe wie CPU- und Speicherprobleme.Character Count: 159

Das Problem der Warteschlange Threading In Go Crawler Colly untersucht das Problem der Verwendung der Colly Crawler Library in Go -Sprache. Entwickler stoßen häufig auf Probleme mit Threads und Anfordern von Warteschlangen. � ...

In dem Artikel werden Schreiben von Unit -Tests in GO erörtert, die Best Practices, Spottechniken und Tools für ein effizientes Testmanagement abdecken.

In der Bibliothek, die für den Betrieb der Schwimmpunktnummer in der GO-Sprache verwendet wird, wird die Genauigkeit sichergestellt, wie die Genauigkeit ...

Backend Learning Path: Die Erkundungsreise von Front-End zu Back-End als Back-End-Anfänger, der sich von der Front-End-Entwicklung verwandelt, Sie haben bereits die Grundlage von Nodejs, ...

In dem Artikel werden die Verwaltungs -Go -Modulabhängigkeiten über Go.mod erörtert, die Spezifikationen, Aktualisierungen und Konfliktlösung abdecken. Es betont Best Practices wie semantische Versioning und reguläre Updates.

Wie kann man im Beegoorm -Framework die mit dem Modell zugeordnete Datenbank angeben? In vielen BeEGO -Projekten müssen mehrere Datenbanken gleichzeitig betrieben werden. Bei Verwendung von BeEGO ...
