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

Barbara Streisand
Freigeben: 2024-10-28 08:20:29
Original
596 Leute haben es durchsucht

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>
Nach dem Login kopieren

Ausgabe:

2
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!