Heim > Backend-Entwicklung > Golang > Warum kann ich „explodierte' Slices und reguläre Parameter in den variadischen Funktionen von Go nicht mischen?

Warum kann ich „explodierte' Slices und reguläre Parameter in den variadischen Funktionen von Go nicht mischen?

Susan Sarandon
Freigeben: 2024-12-17 19:13:19
Original
512 Leute haben es durchsucht

Why Can't I Mix

Mischen von „explodierten“ Slices und regulären Parametern in variadischen Funktionen

Go erlaubt das Mischen von „explodierten“ Slices mit regulären Parametern in variadischen Funktionen nicht. Dies wird im folgenden Beispiel deutlich:

func main() {
    stuff := []string{"baz", "bla"}
    foo("bar", stuff...) // Error: too many arguments in call to foo
}

func foo(s ...string) {
    fmt.Println(s)
}
Nach dem Login kopieren

Gemäß der Go-Sprachspezifikation kann ein Argument variabler Länge auf zwei Arten angegeben werden: durch Aufzählung der Elemente oder durch Verwendung eines vorhandenen Slice. Das Mischen der beiden ist nicht zulässig.

Wenn Elemente aufgezählt werden, wird ein neues Slice erstellt, in dem die Elemente zu den Werten des variadic-Parameters werden. Wenn jedoch ein vorhandener Slice mit ... verwendet wird, wird kein neuer Slice erstellt und der ursprüngliche Slice wird zum variadischen Parameter.

Die Übergabe sowohl eines einzelnen Elements als auch eines Slice führt zu einer Typinkongruenz und damit zu einem Compilerfehler. Das Mischen der beiden Optionen würde die Zuweisung eines neuen Slice erfordern, aber Go unterstützt dieses Verhalten nicht.

Die Fehlermeldung „too much arguments in call to foo“ weist darauf hin, dass der Compiler ein einzelnes Slice oder eine Liste von Elementen erwartet , aber keine Kombination aus beidem. Um dieses Problem zu beheben, entfernen Sie entweder Dinge... oder listen Sie die Elemente einzeln auf.

Das obige ist der detaillierte Inhalt vonWarum kann ich „explodierte' Slices und reguläre Parameter in den variadischen Funktionen von Go nicht mischen?. 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