Maison >développement back-end >Golang >Comment puis-je résoudre l'erreur « Impossible de déduire V » lors de l'utilisation d'interfaces génériques dans Go ?

Comment puis-je résoudre l'erreur « Impossible de déduire V » lors de l'utilisation d'interfaces génériques dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-11 07:19:11455parcourir

How Can I Resolve the

Déduction des paramètres de type dans Go : résolution de l'erreur « Impossible de déduire V »

Lorsque vous traitez avec des interfaces génériques prenant en charge différents types, vous pouvez rencontrer l'erreur « Impossible de déduire V » erreur dans Go, en particulier dans les versions 1.20 et inférieures. Voici comment résoudre ce problème :

Go 1.21 et versions ultérieures

Pour Go 1.21 et versions ultérieures, l'erreur est résolue sans spécifier explicitement les contraintes de type. L'inférence de type prend désormais en compte les types de méthodes lors de l'attribution de valeurs à une interface, permettant au compilateur de déduire des arguments de type à partir des méthodes fournies.

Go 1.20 et inférieur

Dans Go 1.20 et versions antérieures, déduisant le type de V à partir du type concret implémentant la contrainte ConfigStorage[K, V] n'était pas pris en charge. Pour résoudre l'erreur, vous devez fournir explicitement les paramètres de type lors de l'appel de la fonction GetValue, comme ceci :

// Specify string for K and string for V
GetValue[string, string](fileStorage, "key")

Avec cette modification, le compilateur peut désormais déduire le type de V en fonction des types fournis pour K et l'implémentation de la méthode set.

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!

Déclaration:
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