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
Libérer: 2024-12-07 14:13:15
original
825 Les gens l'ont consulté

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)
Copier après la connexion

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal