Maison >développement back-end >Golang >Pourquoi est-ce que j'obtiens « interface sans méthodes » lorsque j'accède à une structure anonyme dans Go ?
Comprendre "l'interface sans méthode" 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'interfaces 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é
<code class="go">id := v.(struct{Id int}).Id</code>
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.
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!