Maison >développement back-end >Golang >Comment transmettre une tranche de tranches en tant qu'arguments décompressés à une fonction variadique dans Go ?
Problème :
Lorsque vous essayez de transmettre une tranche de tranches en tant qu'arguments variadiques à un variadique fonction, une erreur de compilation se produit. L'erreur indique une incapacité à attribuer le type de tranche source au type de paramètre variadique de destination.
Explication :
Selon la spécification Go, une fonction avec des paramètres variadiques de type .. .T attend une seule tranche de type []T comme argument. Cependant, dans le cas d'une tranche de tranches, [][]T, cette condition ne peut être remplie.
Solution :
Pour résoudre ce problème, une nouvelle tranche du le type requis []T doit être créé et rempli avec les valeurs souhaitées. Cette nouvelle tranche peut ensuite être passée décompressée à l'aide de l'opérateur points de suspension (...).
Exemple :
<code class="go">package main import ( "fmt" ) func unpack(args ...interface{}) { fmt.Println(len(args)) } func main() { sliceOfSlices := [][]int{ []int{1, 2}, []int{101, 102}, } // Create a new slice of type []interface{} sliceOfInterfaces := []interface{}{} for _, v := range sliceOfSlices { sliceOfInterfaces = append(sliceOfInterfaces, v) } unpack(sliceOfInterfaces...) // Pass unpacked values }</code>
Sortie :
2
Dans cet exemple, la fonction unpack() est appelée avec les éléments décompressés de sliceOfSlices comme arguments. La fonction len() est utilisée pour démontrer le nombre d'arguments passés, ce qui indique que les deux éléments de la tranche imbriquée sont décompressés.
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!