Wie übergebe ich eine Slice-Slice als variadische Argumente in Go?

Patricia Arquette
Freigeben: 2024-10-27 04:09:03
Original
997 Leute haben es durchsucht

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

Übergabe entpackter Slices als variadische Argumente

In Go akzeptieren variadische Funktionen eine unbegrenzte Anzahl von Argumenten eines bestimmten Typs. Bei der Übergabe eines Slice-Slices an eine solche Funktion ist es wichtig, die beteiligten Typkonvertierungs- und Entpackmechanismen zu verstehen.

Wenn das Slice Elemente desselben Typs wie der variadic-Parameter enthält, kann das Slice ohne übergeben werden Auspacken. Wenn das Slice jedoch eine Mischung aus Typen oder Slices innerhalb von Slices enthält, wird die Situation komplexer.

Wenn das letzte Argument einer variadischen Funktion gemäß der Go-Spezifikation einem Slice-Typ zuweisbar ist, ist dies möglich unverändert als Wert für den variadic-Parameter übergeben, wenn darauf ein ... folgt. Dies bedeutet, dass kein neues Slice erstellt wird.

Im Falle eines Slice von Slices kann das Slice selbst nicht zugeordnet werden zum variadischen Parameter (vom Typ []interface{}). Aus diesem Grund wird ein Fehler ausgegeben, wenn versucht wird, „sliceOfSlices...“ an die Entpackfunktion zu übergeben.

Um dieses Problem zu beheben, ist ein Zwischenschritt erforderlich. Es muss ein neues Slice des entsprechenden Typs (in diesem Fall []interface{}) erstellt und die Elemente des Slice-Slices hineinkopiert werden. Dieses neue Slice kann dann mit ... an die Entpackfunktion übergeben werden.

Zum Beispiel:

<code class="go">var sliceOfSlices2 []interface{}
for _, v := range sliceOfSlices {
    sliceOfSlices2 = append(sliceOfSlices2, v)
}

unpack(sliceOfSlices2...)</code>
Nach dem Login kopieren

Dieser Ansatz stellt sicher, dass jedes Element des Slice-Slices separat an die übergeben wird Entpackfunktion, wie vorgesehen.

Das obige ist der detaillierte Inhalt vonWie übergebe ich eine Slice-Slice als variadische Argumente 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!