Heim > Backend-Entwicklung > Golang > Warum schlägt die Typinferenz von Go für Strukturfelder in kurzen Variablendeklarationen fehl?

Warum schlägt die Typinferenz von Go für Strukturfelder in kurzen Variablendeklarationen fehl?

Patricia Arquette
Freigeben: 2025-01-03 17:36:43
Original
597 Leute haben es durchsucht

Why Does Go's Type Inference Fail for Struct Fields in Short Variable Declarations?

Mehrdeutigkeit der Go-Typ-Inferenz bei der Zuweisung mit Strukturen

Betrachten Sie das folgende Go-Code-Snippet:

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

In diesem Snippet ist der Typ von i wird während der Zuweisung erfolgreich als int abgeleitet. Wenn jedoch ein ähnliches Snippet ein Strukturfeld umfasst, schlägt die Typinferenz fehl, wie unten dargestellt:

type Foo struct {
    Bar int
}

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

Im letzteren Snippet schlägt die Typinferenz für f.Bar mit der Fehlermeldung „non-name“ fehl f.Bar auf der linken Seite von :=".

Um dieses Verhalten zu erklären, wenden wir uns dem relevanten Problem im Go zu tracker:

Github-Problem 6842

Problem 6842 („Spezifikation: Zuweisung zu Feldern mit Kurzdeklarationsnotation“) dokumentiert dieses Verhalten als offenes Problem. Das Problem ergibt sich aus der Mehrdeutigkeit in der Syntax der Zuweisung. Insbesondere kann der Compiler nicht bestimmen, ob f.Bar ein Variablenname oder ein Feldname innerhalb des Ausdrucks „f.Bar, next“ sein soll.

Während der Problembericht es als offen markiert, deuten spätere Kommentare darauf hin wurden möglicherweise durch andere Änderungen gelöst oder ersetzt. Die neueste offizielle Meldung besagt jedoch weiterhin, dass es sich hierbei um ein bekanntes Problem handelt.

Das obige ist der detaillierte Inhalt vonWarum schlägt die Typinferenz von Go für Strukturfelder in kurzen Variablendeklarationen 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