Heim > Backend-Entwicklung > Golang > Warum schlägt die Typinferenz von Go für Strukturfeldzuweisungen fehl?

Warum schlägt die Typinferenz von Go für Strukturfeldzuweisungen fehl?

Barbara Streisand
Freigeben: 2024-12-28 17:29:30
Original
648 Leute haben es durchsucht

Why Does Go's Type Inference Fail for Struct Field Assignments?

Fehlgeschlagene Typinferenz in Go-Zuweisungen

Der Typinferenzmechanismus von Go ermöglicht normalerweise prägnante Zuweisungsanweisungen. Bei einigen Zuweisungen werden die Typen jedoch möglicherweise nicht wie erwartet abgeleitet.

Betrachten Sie das folgende Beispiel:

i := 10
next := 11
prev, i := i, next
Nach dem Login kopieren

Dieses Snippet leitet die Typen der Variablen korrekt ab und weist sie entsprechend zu.

Bei einer ähnlichen Zuweisung mit einem Strukturfeld können jedoch Typinferenzprobleme auftreten:

type Foo struct {
    Bar int
}

f := Foo{10}
next := 11
prev, f.Bar := f.Bar, next
Nach dem Login kopieren

In diesem Fall Der Compiler meldet einen Fehler: „non-name on left side of :=.“

Der Grund für diese Ungleichheit ist, dass im ersten Beispiel die linke Seite der Zuweisung ein Variablenname ist, while Im zweiten Beispiel handelt es sich um ein Strukturfeld. Die Typinferenz-Engine von Go erfordert eine benannte Variable auf der linken Seite, um auf den Typ der rechten Seite schließen zu können.

Dieses Problem wird als Go-Problem 6842 erkannt. Es wird nicht als Fehler, sondern eher als Einschränkung betrachtet der aktuellen Typinferenzimplementierung.

Das obige ist der detaillierte Inhalt vonWarum schlägt die Typinferenz von Go für Strukturfeldzuweisungen fehl?. 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