Wie kann verhindert werden, dass ein Typ in Go als Kartenschlüssel verwendet wird?

Susan Sarandon
Freigeben: 2024-10-28 02:28:31
Original
235 Leute haben es durchsucht

How to Prevent a Type from Being Used as a Map Key in Go?

Verhindern der Typverwendung als Map-Schlüssel

Problem: Versuche, einen Typ als Map-Schlüssel zu verwenden, führen trotz der Kompilierzeit zu Fehlern Typ, der ein privates Mitglied enthält. Wie kann dieses Problem gelöst werden?

Antwort:

Auch wenn es nicht unbedingt von Vorteil ist, die Verwendung eines Typs als Kartenschlüssel zu verhindern, gibt es bestimmte Umstände die eine solche Maßnahme erforderlich machen. Gemäß der Sprachspezifikation müssen Kartenschlüssel bestimmte Vergleichsregeln einhalten. Hier sind zwei Methoden, um zu verhindern, dass ein Typ als Kartenschlüssel verwendet wird:

Methode 1: Nicht vergleichbares Feld einbetten

Die einfachste Lösung besteht darin, ein Feld einzubetten innerhalb des Typs, dessen Typ nicht vergleichbar ist, z. B. ein Slice, eine Karte oder eine Funktion. Dies verstößt gegen die Anforderungen des Vergleichsoperators für Kartenschlüssel und macht den Typ ungeeignet. Zum Beispiel:

<code class="go">type MyType struct {
    S string
    i int
    notComparable []int
}</code>
Nach dem Login kopieren

Methode 2: Verwenden Sie einen Wrapper-Typ

Alternativ kann man einen Wrapper-Typ erstellen, der den ursprünglichen Typ einbettet und einen nicht vergleichbaren Typ hinzufügt Feld. Dieser Wrapper-Typ kann an anderer Stelle verwendet werden, während der ursprüngliche Typ seine Vergleichbarkeit behält. Zum Beispiel:

<code class="go">type myType struct {
    S string
    i int
}

type MyType struct {
    myType
    notComparable []int
}</code>
Nach dem Login kopieren

Hinweis:

Es ist wichtig, die möglichen Auswirkungen der Verhinderung der Typverwendung als Kartenschlüssel zu berücksichtigen. Im Fall der Methode „Nicht vergleichbares Feld einbetten“ wird ein nicht vergleichbares Feld eingeführt, was Auswirkungen auf Vergleichsvorgänge haben kann, die den Typ betreffen.

Das obige ist der detaillierte Inhalt vonWie kann verhindert werden, dass ein Typ in Go als Kartenschlüssel verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!