Der PHP-Editor Xiaoxin teilt eine praktische Technik, nämlich das automatische Hinzufügen neuer Elemente zu Funktionsparametern, wenn das Slice (Slice) wächst. Slices sind eine flexible Datenstruktur, können jedoch bei der Verwendung innerhalb von Funktionsparametern einige Herausforderungen mit sich bringen. In diesem Artikel wird eine prägnante Methode zum automatischen Hinzufügen neuer Elemente zu Funktionsparametern vorgestellt, wenn das Slice wächst, indem variable Parameter (Variadic Arguments) und der Spread-Operator (Spread Operator) verwendet werden. Diese Technik kann die Lesbarkeit und Wartbarkeit des Codes verbessern. Lassen Sie es uns gemeinsam lernen!
Gibt es eine Möglichkeit, dies zu automatisieren?
package main import "fmt" func main() { var a []string a = append(a, "this", "this2", "this3") increaseArguments(a) a = append(a, "this4") increaseArguments(a) } func increaseArguments(b []string) { // I want, when i add new element to slice i want this function act as this // fmt.Println(b[0],b[1], b[2], b[3]) fmt.Println(b[0], b[1], b[2]) }
Gibt es eine Möglichkeit, b[3] automatisch als Argument zu fmt.println hinzuzufügen?
Bitte beachten Sie Folgendes, wenn b
的类型为 []any
,您可以将其作为 fmt.println()
:
fmt.println(b...)
Aber wegen b
的类型是 []string
kannst du nicht.
Aber wenn man b
转换为 []any
in Scheiben schneidet, funktioniert es. Sie können dies mit dieser Hilfsfunktion tun:
func convert[t any](x []t) []any { r := make([]any, len(x)) for i, v := range x { r[i] = v } return r }
Dann:
func increasearguments(b []string) { fmt.println(convert(b)...) }
Dies wird ausgegeben (versuchen Sie es auf Go Playground):
this this2 this3 this this2 this3 this4
Hinweis: in convert()
中创建一个新切片不会使该解决方案变慢,因为显式传递值(如 fmt.println(b[0], b[1], b[2])
) wird implizit ein Slice erstellt.
Verwandte Fragen anzeigen: Wie übergebe ich den Wert einer variadischen Funktion mit mehreren Rückgabewerten?
Das obige ist der detaillierte Inhalt vonSo fügen Sie automatisch neue Elemente eines Slice zu einem Funktionsparameter hinzu, wenn das Slice wächst. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!