Heim > Backend-Entwicklung > Golang > So beheben Sie den Golang-Fehler: Der Nicht-Schnittstellentyp kann der Schnittstelle {} nicht zugewiesen werden, Lösung

So beheben Sie den Golang-Fehler: Der Nicht-Schnittstellentyp kann der Schnittstelle {} nicht zugewiesen werden, Lösung

WBOY
Freigeben: 2023-08-21 14:03:46
Original
1555 Leute haben es durchsucht

如何解决golang报错:non-interface type cannot be assigned to interface{ },解决方案

So beheben Sie den Golang-Fehler: Der Nicht-Schnittstellentyp kann der Schnittstelle {} nicht zugewiesen werden, Lösung

Beim Schreiben von Code in Golang stoßen wir manchmal auf eine häufige Fehlermeldung: Der Nicht-Schnittstellentyp kann nicht zugewiesen werden Schnittstelle{ }. Diese Fehlermeldung kann auftreten, wenn das Programm versucht, dem Typ interface{} einen Nicht-Schnittstellentyp zuzuweisen. Wie lösen wir dieses Problem? Die Lösung wird unten mit Codebeispielen detailliert beschrieben.

Zunächst müssen wir die Konzepte von Schnittstellen und Schnittstellentypen in Golang verstehen. In Golang ist eine Schnittstelle eine Sammlung einer oder mehrerer Methodensignaturen. Der Typ interface{} stellt eine leere Schnittstelle dar, das heißt, er kann Werte jeden Typs akzeptieren. Da der Typ interface{} Werte jeden Typs akzeptieren kann, ist beim Zuweisen von Werten eine Typzusicherung erforderlich.

Das Folgende ist ein einfaches Codebeispiel, das den Fehler zeigt, dass der Nicht-Schnittstellentyp beim Zuweisen nicht der Schnittstelle {} zugewiesen werden kann, und die entsprechende Lösung:

package main

import (
    "fmt"
)

type Animal interface {
    Say() string
}

type Cat struct {
    Name string
}

func (c Cat) Say() string {
    return "Meow"
}

func main() {
    cat := Cat{Name: "Tom"}

    // 错误示例:尝试将非接口类型赋值给interface{}类型
    var animal interface{}
    animal = cat // 报错:non-interface type cannot be assigned to interface{}
    fmt.Println(animal)

    // 正确示例:使用类型断言将非接口类型赋值给interface{}类型
    animal = cat.(Animal)
    fmt.Println(animal.Say())
}
Nach dem Login kopieren

Im obigen Beispiel definieren wir eine Animal-Schnittstelle und eine Cat-Struktur, die Die Cat-Struktur implementiert die Say-Methode. In der Hauptfunktion erstellen wir ein Cat-Objekt und versuchen, es einer Variablen vom Typ interface{} zuzuweisen. Im Fehlerbeispiel weisen wir cat direkt dem Tier zu und es erscheint die Fehlermeldung, dass der Nicht-Schnittstellentyp nicht der Schnittstelle {} zugewiesen werden kann.

Um dieses Problem zu lösen, müssen wir Typzusicherungen verwenden, um Nicht-Schnittstellentypen den Schnittstellentypen {} zuzuweisen. Im richtigen Beispiel verwenden wir cat.(Animal), um cat in den Schnittstellentyp Animal zu konvertieren und ihn der Variable animal zuzuweisen. Auf diese Weise kann der Nicht-Schnittstellentyp erfolgreich dem Schnittstellentyp {} zugewiesen werden.

Um es zusammenzufassen: Wenn in Golang der Fehler „Nicht-Schnittstellentyp kann nicht der Schnittstelle {} zugewiesen werden“ auftritt, müssen wir Typzusicherungen verwenden, um den Nicht-Schnittstellentyp in den Schnittstellentyp zu konvertieren und ihn dann zuzuweisen. Auf diese Weise können wir das Problem lösen und die Programmierung und Entwicklung wie gewohnt fortsetzen. Ich hoffe, dass die Lösungen in diesem Artikel Ihnen helfen können.

Das obige ist der detaillierte Inhalt vonSo beheben Sie den Golang-Fehler: Der Nicht-Schnittstellentyp kann der Schnittstelle {} nicht zugewiesen werden, Lösung. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage