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

Pourquoi l'inférence de type de Go échoue-t-elle pour les affectations de champs Struct ?

Barbara Streisand
Libérer: 2024-12-28 17:29:30
original
630 Les gens l'ont consulté

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

Échec de l'inférence de type dans les affectations Go

Le mécanisme d'inférence de type de Go permet généralement des instructions d'affectation concises. Cependant, certaines affectations peuvent ne pas parvenir à déduire les types comme prévu.

Considérons l'exemple suivant :

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

Cet extrait déduit correctement les types des variables et les affecte en conséquence.

Cependant, une affectation similaire impliquant un champ struct peut rencontrer des problèmes d'inférence de type :

type Foo struct {
    Bar int
}

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

Dans ce cas, le compilateur signale une erreur : "non-name on left side of :=."

La raison de cette disparité est que dans le premier exemple, le côté gauche de l'affectation est un nom de variable, tandis que dans le deuxième exemple, il s'agit d'un champ struct. Le moteur d'inférence de type de Go nécessite une variable nommée sur le côté gauche pour déduire le type du côté droit.

Ce problème est reconnu comme Go issue 6842. Il n'est pas considéré comme un bug mais plutôt comme une limitation de l'implémentation actuelle de l'inférence de type.

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