Heim >Backend-Entwicklung >Golang >Warum kann Go beim Zuweisen zu Strukturfeldern mithilfe kurzer Variablendeklarationen keine Typen ableiten?

Warum kann Go beim Zuweisen zu Strukturfeldern mithilfe kurzer Variablendeklarationen keine Typen ableiten?

Susan Sarandon
Susan SarandonOriginal
2024-12-18 12:06:10732Durchsuche

Why Does Go Fail to Infer Types When Assigning to Struct Fields Using Short Variable Declarations?

Go kann bei der Zuweisung keinen Typ ableiten: Verständnis des Problems

Diese Frage bezieht sich auf einen Typableitungsfehler, der beim Zuweisen von Werten zu Strukturfeldern auftritt unter Verwendung der Kurzdeklarationsnotation in Go.

Die Problem

Bedenken Sie den folgenden Codeausschnitt:

i := 10
next := 11
prev, i := i, next

Dieser Code funktioniert wie vorgesehen und leitet die richtigen Typen für prev und i ab. Ein scheinbar ähnlicher Ausschnitt mit einer Strukturfeldzuweisung schlägt jedoch beim Typ „infer:“ fehl:

type Foo struct {
    Bar int
}

f := Foo{10}
next := 11
prev, f.Bar := f.Bar, next

Dieses Mal beschwert sich Go über einen „Nicht-Namen auf der linken Seite von :=".

Die Erklärung

Der Unterschied liegt in der Tatsache, dass bei der Zuweisung zu einem Strukturfeld mithilfe der Kurzdeklarationssyntax Go erwartet, dass auf der linken Seite der Strukturname gefolgt von einem Punkt (.) und dem Feldnamen steht. Zum Beispiel f.Bar. Allerdings ist f allein keine gültige linke Seite für die Zuweisung.

Die Lösung

Die richtige Methode zur Zuweisung zu einem Strukturfeld mithilfe der Kurzdeklarationsnotation ist :

f.Bar, prev = next, f.Bar

Diese Syntax gibt eindeutig den Strukturnamen, den Feldnamen und die Zuweisung an Betrieb.

Ist es ein Fehler?

Das hier besprochene Verhalten ist kein Fehler. Es handelt sich um eine Einschränkung der Kurzdeklarationsnotation. Es gibt jedoch ein offenes Problem (Problem 6842) im Go-Issue-Tracker, das eine Erweiterung der Kurzdeklarationssyntax vorschlägt, um die Zuweisung zu Strukturfeldern zu ermöglichen. Bis dieses Problem behoben ist, wird empfohlen, die oben gezeigte ausführlichere Alternative zu verwenden.

Das obige ist der detaillierte Inhalt vonWarum kann Go beim Zuweisen zu Strukturfeldern mithilfe kurzer Variablendeklarationen keine Typen ableiten?. 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