Heim  >  Artikel  >  Backend-Entwicklung  >  Wie übergebe ich ein Slice-Slice als entpackte Argumente an eine variadische Funktion in Go?

Wie übergebe ich ein Slice-Slice als entpackte Argumente an eine variadische Funktion in Go?

Barbara Streisand
Barbara StreisandOriginal
2024-10-28 08:20:29584Durchsuche

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

Slice-Slice als variadische Argumente entpacken

Problem:
Beim Versuch, ein Slice-Slice als entpackte Argumente an ein Variadic zu übergeben Funktion tritt ein Kompilierungsfehler auf. Der Fehler weist darauf hin, dass der Quell-Slice-Typ nicht dem variadischen Parametertyp des Ziels zugewiesen werden kann.

Erklärung:
Gemäß der Go-Spezifikation ist eine Funktion mit variadischen Parametern vom Typ .. .T erwartet ein einzelnes Slice vom Typ []T als Argument. Im Fall eines Slices von Slices, [][]T, kann diese Bedingung jedoch nicht erfüllt werden.

Lösung:
Um dieses Problem zu beheben, muss ein neues Slice des Der erforderliche Typ []T muss erstellt und mit den gewünschten Werten gefüllt werden. Dieses neue Slice kann dann entpackt mit dem Ellipsenoperator (...) übergeben werden.

Beispiel:

<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>

Ausgabe:

2

In diesem Beispiel wird die Funktion unpack() mit den entpackten Elementen der SliceOfSlices als Argumente aufgerufen. Die Funktion len() wird verwendet, um die Anzahl der übergebenen Argumente zu demonstrieren, was anzeigt, dass beide Elemente des verschachtelten Slice entpackt sind.

Das obige ist der detaillierte Inhalt vonWie übergebe ich ein Slice-Slice als entpackte Argumente an eine variadische Funktion in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn