Heim >Backend-Entwicklung >Golang >Warum gibt mein Go-Code den Fehler „m2 kann Map[interface{}]interface{} nicht zugewiesen werden' aus?

Warum gibt mein Go-Code den Fehler „m2 kann Map[interface{}]interface{} nicht zugewiesen werden' aus?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-06 21:50:13331Durchsuche

Why Does My Go Code Throw a

So beheben Sie den Fehler „M2 kann nicht zu Map[interface{}]interface{} zugewiesen werden“

In Ihrem Code ist ein typbezogener Fehler aufgetreten Kompatibilität zwischen einer in der Tastenfunktion verwendeten Karte und der Karte, auf die Sie zugreifen möchten:

cannot use m2 (type map[int]interface {}) as type map[interface {}]interface {} in argument to Keys

Um dieses Problem zu beheben, sollten Sie Folgendes beachten Folgendes:

Golangs Typsystem und Generics

  • Golang ist eine statisch typisierte Sprache, was bedeutet, dass explizite Typdefinitionen erforderlich sind.
  • Golang unterstützt daher keine Generics Sie können keine Funktion mit generischen Typen definieren.

Typkompatibilität

In In Ihrem Code ist die Funktion „Keys“ so definiert, dass sie mit einer Karte vom Typ „map[interface{}]interface{} funktioniert, während Sie eine Karte vom Typ „map[int]interface{}“ verwenden. Diese Typen sind nicht kompatibel, da die Schlüsseltypen unterschiedlich sind.

Optionen zur Lösung

Es gibt mehrere Möglichkeiten, dieses Problem zu beheben:

Option 1: Ändern Sie die Tasten Funktion

  1. Ändern Sie die Funktionsdefinition, um eine Karte des Typs zu akzeptieren map[int]interface{}:
func Keys(m map[int]interface{}) []interface{} {
    // Implement function
}

Option 2: Karte ändern

  1. Ändern Sie den Typ Ihrer Karte in Karte[ interface{}]interface{}:
m2 := map[interface{}]interface{}{
    2: "string",
    3: "int",
}

Option 3: Reflection verwenden (Nicht empfohlen)

  1. Verwenden Sie das Reflect-Paket, um auf die Kartenschlüssel zuzugreifen. Dieser Ansatz bringt jedoch Leistungseinbußen mit sich.

Denken Sie daran, dass die Typkompatibilität in Golang von entscheidender Bedeutung ist. Stellen Sie sicher, dass die Typen in Ihrem Code mit den erwarteten Typen übereinstimmen, um solche Fehler zu vermeiden.

Das obige ist der detaillierte Inhalt vonWarum gibt mein Go-Code den Fehler „m2 kann Map[interface{}]interface{} nicht zugewiesen werden' aus?. 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