Maison  >  Article  >  développement back-end  >  Comment passer une tranche de tranches en tant qu'arguments variadiques dans Go ?

Comment passer une tranche de tranches en tant qu'arguments variadiques dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-27 04:09:03989parcourir

How to Pass a Slice of Slices as Variadic Arguments in Go?

Passer des tranches décompressées en tant qu'arguments variadiques

Dans Go, les fonctions variadiques acceptent un nombre indéfini d'arguments d'un type spécifique. Lors du passage d'une tranche de tranches à une telle fonction, il est crucial de comprendre les mécanismes de conversion de type et de décompression impliqués.

Si la tranche contient des éléments du même type que le paramètre variadique, la tranche peut être passée sans déballage. Cependant, si la tranche contient un mélange de types ou de tranches à l'intérieur des tranches, la situation devient plus complexe.

Selon la spécification Go, si l'argument final d'une fonction variadique est attribuable à un type de tranche, il peut être passée telle quelle comme valeur du paramètre variadique s'il est suivi de .... Cela signifie qu'aucune nouvelle tranche ne sera créée.

Dans le cas d'une tranche de tranches, la tranche elle-même ne peut pas être attribuée au paramètre variadique (de type []interface{}). C'est pourquoi une erreur est générée lors de la tentative de transmission de sliceOfSlices... à la fonction de décompression.

Pour résoudre ce problème, une étape intermédiaire est requise. Une nouvelle tranche du type approprié ([]interface{} dans ce cas) doit être créée et les éléments de la tranche des tranches copiés dedans. Cette nouvelle tranche peut ensuite être passée à la fonction unpack en utilisant ....

Par exemple :

<code class="go">var sliceOfSlices2 []interface{}
for _, v := range sliceOfSlices {
    sliceOfSlices2 = append(sliceOfSlices2, v)
}

unpack(sliceOfSlices2...)</code>

Cette approche garantit que chaque élément de la tranche de tranches est passé séparément à la fonction de décompression, comme prévu.

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