Impossible d'utiliser des FOOS (variable de type [] FOOS) en tant qu'interface {} valeur en argument pour tester p>
blockQuote> L'utilisation prévue doit être utilisée comme la fonction intégrée https://golang.google.cn/pkg/builtine/#append p> < pré> xxx pré> Bien que, comme je l'ai vu https : //golang.google.cn/pkg/builtin/#type p> Alors, je suis très confus ici. P> Pourquoi l'opérateur de la propagation ne fonctionne pas comme prévu? Par exemple, dans JavaScript, l'opérateur de propagation déploie simplement le tableau en éléments. Mais à Golang, il semble que Sommes-nous même capables de créer des mécanismes personnalisés similaires tels que
Description h1>
ANNEX () code>. p>
APPEND () code> n'utilise pas
interface {} code>, qui est étrange, puisque partout que je Vous avez cherché toutes les personnes disent à utiliser
interface {} code> lorsque vous ne connaissez pas le type. Mais ils ne le font pas.
NOPE,
ANNEX () CODE> Utilise un type "Build-in" appelé
Type Code>, ce qui apparemment, les docs disent que c'est un
int code>. Bien que je ne peux pas l'utiliser. Il n'y a pas de tel type. Et non plus, je saurais l'utiliser s'il y avait. P>
Questions H1>
append () code> du tout? Ou suis-je un mannequin et j'utilise quelque chose de mal en tout cas? P> Li>
ol> p>
3 Réponses :
Je pense que c'est la question que vous rencontrez ici. P>
https://github.com/golang/go/wiki/interfaceLice p>
Je ne suis pas un expert en cela, mais j'ai déjà frappé cela avant, la "tranche d'interface vide" n'est pas une interface et ne peut donc être remplacée par un type qui est le problème que vous rencontrez, cela a à voir avec le la structure de la mémoire étant différente. Ce qui précède a une explication beaucoup meilleure que celle que je peux donner. p>
Je vois. Regardez-le à nouveau, je peux voir que ... interface {} code> est interprété comme
[] interface {} code>. Je pensais juste que cela ne devrait pas être le cas. Parce que l'intention de l'opérateur de propagation ne doit pas dire "je veux un tableau d'interfaces", mais dire "je veux un ensemble d'interface {} éléments". C'est pourquoi je pensais que c'était étrange et déroutant, surtout lorsqu'il vient d'un contexte JS: 3. Merci d'ailleurs.
Vous pouvez taper votre tranche dactylographiée pour obtenir ce dont vous avez besoin:
Vous pouvez generic: = Make ([] interface {}, len (foos)) code>,
pour i, f: = plage foos code> et
générique [i] = f code>, car la longueur de
foos code> est connue. On dirait que ceci est lié à l'autre réponse: Github .Com / golang / go / wiki / interfacelice # what-can-i-do-accoun ad
Combinant les deux réponses non négatives dans ce que je ressens est la meilleure solution: partiellement inspiré par: p> https://github.com/golang/go/wiki/interfaceLice#what-can-i -Do-plutôt p> p>
Ajouter code> a une fonction intégrée Super Powers.
La documentation de package intégrée utilise
type code> comme espace réservé pour n'importe quel type. Cette utilisation de
Type code> n'est pas valide Go Syntaxe et n'est pas utilisable dans les fonctions définies de l'application. Comme le dit Peterso, l'annexe a des super pouvoirs.
Je vois. Je me sens comme un peu injuste d'être honnête. Merci d'avoir effacé cela. Donc, ma question est toujours valide. Pourquoi et qui a donné le bowvote? C'est une question légitime qui aidera sûrement les autres personnes aussi et je l'ai faite aussi cristalline que possible. Je ne sais pas ce que Stackoverflow veut plus.
Une future version de Go peut vous donner la puissance de
Ajoutez code> et d'autres produits. Voir blog.golang.org/why-Generics .
@ Ceriselimón Si vous en avez envie, vous pouvez former une réponse puisque je pense que vous fournissez toutes les informations qu'il y a pour répondre à la question. Je vais le marquer comme résolu si possible.