Maison > développement back-end > Golang > Pourquoi ne puis-je pas renvoyer plusieurs valeurs sans déstructuration dans Go ?

Pourquoi ne puis-je pas renvoyer plusieurs valeurs sans déstructuration dans Go ?

Mary-Kate Olsen
Libérer: 2024-11-07 19:13:03
original
273 Les gens l'ont consulté

Why Can't I Return Multiple Values Without Destructuring in Go?

Renvoyer plusieurs valeurs dans Go : comprendre les restrictions nuancées

Dans Go, renvoyer plusieurs valeurs vous permet de renvoyer plusieurs résultats à partir d'une seule fonction . Cependant, tous les scénarios de rendements multiples ne sont pas considérés comme valables. Explorons les contraintes et une exception notable à cette règle.

Pourquoi l'exemple de deux valeurs de retour est valide

L'exemple que vous avez fourni :

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

est valide car il suit le modèle "virgule ok". Cet idiome est spécifiquement utilisé lors de l'accès à une clé de carte :

mapValue, ok := map[key]
Copier après la connexion

Afin de récupérer à la fois la valeur de la carte et le statut "ok", nous devons les attribuer à des variables. Le compilateur comprend que les variables "it" et "present" sont utilisées pour déstructurer le résultat de l'opération d'indexation de la carte.

Pourquoi l'exemple d'une valeur de retour est invalide

En revanche, l'exemple suivant :

func FindUserInfo(id string) (Info, bool) {
    return all[id]
}
Copier après la connexion

est invalide car il ne déstructure pas l'opération d'indexation de la carte. Cela conduirait à une valeur de retour unique, qui n'est pas compatible avec le type de retour spécifié de la fonction.

Évitement des variables temporaires impossible

Ce n'est actuellement pas le cas possible d'éviter les variables temporaires dans ce scénario spécifique. L'idiome "virgule ok" nécessite l'affectation explicite des valeurs déstructurées aux variables.

Conclusion

Comprendre les nuances de plusieurs valeurs de retour dans Go est crucial. Bien que le modèle « virgule ok » autorise plusieurs valeurs de retour, il est limité à l'indexation de cartes, à la récupération de canaux et aux assertions de type. Par conséquent, dans votre cas, des variables temporaires sont nécessaires lors du renvoi à la fois d'une valeur et d'un statut « ok » à partir d'une opération d'indexation de carte.

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