Maison > développement back-end > Golang > le corps du texte

Pourquoi Go nécessite-t-il un modèle « Virgule Ok » pour les retours de valeurs multiples provenant de Map Access ?

Susan Sarandon
Libérer: 2024-11-06 18:10:03
original
743 Les gens l'ont consulté

Why Does Go Require a

Problème de retour de valeurs multiples dans Go

Dans Go, il est possible de renvoyer plusieurs valeurs à partir d'une fonction en utilisant plusieurs affectations. Cependant, certaines exigences spécifiques doivent être remplies.

Considérez le code suivant :

func FindUserInfo(id string) (Info, bool) {
    it, present := all[id] // Valid comma ok assignment pattern
    return it, present
}
Copier après la connexion

Ce code utilise correctement le modèle "virgule ok" pour obtenir plusieurs valeurs de la carte chercher. La valeur booléenne actuelle indique si la clé a été trouvée dans la carte.

Cependant, le code suivant n'est pas valide :

func FindUserInfo(id string) (Info, bool) {
    return all[id] // Invalid, without a comma ok expression
}
Copier après la connexion

Le compilateur signale cela comme une erreur, indiquant qu'il existe plusieurs valeurs à renvoyer, mais une seule variable est affectée. Cette erreur se produit car Go nécessite une affectation explicite de toutes les valeurs de retour.

Pour développer cette erreur, le langage Go utilise une règle « d'équivalence de type » pour l'affectation. Dans la plupart des cas, cela signifie que l'attribution d'une valeur d'un type à une variable d'un autre type entraînera une erreur de compilation. Cependant, lors de l'accès à une carte, une exception est faite.

L'accès à une carte renvoie un tuple à deux valeurs : la valeur sous-jacente et un booléen indiquant si la clé a été trouvée. Ce tuple est généralement attribué à une paire de variables à l'aide du modèle "virgule ok".

Le compilateur Go est spécifiquement conçu pour autoriser ce modèle, même s'il semble violer la règle d'équivalence de type. Par conséquent, vous ne pouvez pas attribuer une valeur de mappage directement à plusieurs variables sans utiliser une expression virgule ok.

Dans votre cas, vous pouvez éviter d'utiliser des variables temporaires en vous assurant de toujours utiliser le modèle virgule ok lorsque vous accédez à un carte. Cela garantit que les multiples valeurs sont correctement attribuées et que le compilateur ne signalera aucune erreur.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!