Comprendre "l'interface sans méthodes" dans Go
Dans votre code, vous avez rencontré l'erreur "type interface {} est une interface sans méthodes" lorsque vous essayez d'accéder à un champ à partir d'une structure anonyme passée à une fonction. Pour comprendre cette erreur, il est essentiel de saisir le concept d'interface dans Go.
Une interface dans Go est un type qui définit un ensemble de méthodes qu'un type concret doit implémenter. Cependant, dans votre cas, l'interface que vous utilisez est une "interface vide" désignée par interface {}. Une interface vide n'a aucune méthode et peut contenir des valeurs de n'importe quel type, ce qui en fait un type universel.
Accédez au champ de structure anonyme
Pour accéder aux champs de la structure anonyme transmise à NewJob, vous devez la saisir avec un type compatible avant de pouvoir accéder à ses champs. L'assertion de type vous permet de convertir l'interface vide en un type concret spécifique.
Le code corrigé
id := v.(struct{Id int}).Id
Dans ce code corrigé, nous tapons assert l'interface v à une structure avec un champ Id. Cela nous permet d'accéder au champ Id et le programme s'exécutera comme prévu.
N'oubliez pas que l'assertion de type doit être utilisée judicieusement car elle peut entraîner des erreurs d'exécution si l'assertion de type échoue.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3