Maison > développement back-end > Golang > le corps du texte

Comment transmettre une tranche de tranches en tant qu'arguments décompressés à une fonction variadique dans Go ?

Barbara Streisand
Libérer: 2024-10-28 08:20:29
original
596 Les gens l'ont consulté

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

Déballage de tranches de tranches en tant qu'arguments variadiques

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

Sortie :

2
Copier après la connexion

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!