Maison > développement back-end > Golang > Pourquoi l'inférence de type de Go échoue-t-elle pour les champs Struct dans les déclarations de variables courtes ?

Pourquoi l'inférence de type de Go échoue-t-elle pour les champs Struct dans les déclarations de variables courtes ?

Patricia Arquette
Libérer: 2025-01-03 17:36:43
original
586 Les gens l'ont consulté

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

Ambigüité d'inférence de type Go dans l'affectation avec des structures

Considérez l'extrait de code Go suivant :

i := 10
next := 11
prev, i := i, next
Copier après la connexion

Dans cet extrait, le type de i est déduit avec succès comme int lors de l'affectation. Cependant, lorsqu'un extrait similaire implique un champ struct, l'inférence de type échoue, comme illustré ci-dessous :

type Foo struct {
    Bar int
}

f := Foo{10}
next := 11
prev, f.Bar := f.Bar, next
Copier après la connexion

Dans ce dernier extrait, l'inférence de type pour f.Bar échoue avec le message d'erreur "non-name f.Bar sur le côté gauche de :=".

Pour expliquer ce comportement, nous nous tournons vers le problème pertinent dans le Go tracker :

Github Issue 6842

Issue 6842 (« spec : attribution à des champs avec une notation de déclaration courte ») documente ce comportement comme un problème en suspens. Le problème vient de l’ambiguïté de la syntaxe de l’affectation. Plus précisément, le compilateur ne peut pas déterminer si f.Bar est destiné à être un nom de variable ou un nom de champ dans l'expression f.Bar, ensuite.

Bien que le rapport de problème le marque comme ouvert, des commentaires ultérieurs suggèrent qu'il peut avoir été résolu ou remplacé par d’autres changements. Cependant, le dernier mot officiel demeure qu'il s'agit d'un problème connu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal