Considérez l'extrait de code Go suivant :
i := 10 next := 11 prev, i := i, next
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
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 :
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!