Mischen von „explodierten“ Slices und regulären Parametern in variadischen Funktionen
In Go ermöglichen variadische Funktionen eine beliebige Anzahl von Argumenten. Es ist jedoch nicht möglich, bei der Angabe der Argumente sowohl Aufzählungselemente als auch vorhandene Slices zu kombinieren.
Variadic-Argument-Syntax
Der an einen Variadic-Parameter übergebene Wert kann entweder sein angegeben durch:
Mischen von Aufzählungselementen und Slices
Das Folgende Code lässt sich nicht kompilieren:
func main() { stuff := []string{"baz", "bla"} foo("bar", stuff...) // compile error: too many arguments } func foo(s ...string) {}
Das liegt daran, dass Go das Mischen der beiden Syntaxen nicht zulässt. Beim Aufzählen einzelner Elemente wird ein neues Slice erstellt. Bei Verwendung eines vorhandenen Slice wird dasselbe Slice als variadischer Parameter verwendet.
Grund für die Einschränkung
Die Einschränkung ist auf die Art und Weise zurückzuführen, wie Go variadische Argumente verarbeitet. Beim Aufzählen von Elementen wird ein neues Slice erstellt, um die Werte zu speichern. Wenn jedoch ein bestehender Slice übergeben wird, wird kein neuer Slice erstellt. Stattdessen wird das übergebene Slice direkt dem variadischen Parameter zugewiesen. Das Mischen der beiden würde die Zuweisung eines neuen Slice erfordern, was derzeit nicht unterstützt wird.
Das obige ist der detaillierte Inhalt vonKönnen Go Variadic-Funktionen Aufzählungsargumente und vorhandene Slices mischen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!