"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-07
Parcourir:890

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 affecté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 transmise à la fonction de décompression en utilisant ....

Par exemple :

var sliceOfSlices2 []interface{}
for _, v := range sliceOfSlices {
    sliceOfSlices2 = append(sliceOfSlices2, v)
}

unpack(sliceOfSlices2...)

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

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3