Maison >développement back-end >Golang >Pourquoi l'assertion de type échoue-t-elle sur une tranche de valeurs d'interface ?

Pourquoi l'assertion de type échoue-t-elle sur une tranche de valeurs d'interface ?

DDD
DDDoriginal
2024-12-07 14:13:15826parcourir

Why Does Type Assertion Fail on a Slice of Interface Values?

Assertion de type d'une tranche de valeurs d'interface

En essayant de taper assert d'une tranche de nœud vers une tranche de symbole, une erreur est rencontré, indiquant que l'assertion de type n'est pas valide. En effet, une tranche de valeurs d'interface n'est pas en soi un type d'interface.

Une tranche est un type distinct sans interface, tandis qu'un type d'interface définit un ensemble de méthodes. Par conséquent, cela n'a pas de sens de supposer qu'une tranche de valeurs d'interface est également un type d'interface.

Pour résoudre ce problème, au lieu de taper directement la tranche de Node, vous pouvez convertir chaque élément de la tranche au type souhaité, Symbol dans ce cas, et créez une nouvelle tranche du type souhaité. Par exemple, le code suivant permettrait d'obtenir le résultat souhaité :

symbols := make([]Symbol, len(args))
for i, arg := range args { symbols[i] = arg.(Symbol) }
fixed, rest := parseFormals(symbols)

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