Effiziente Funktionsanwendung auf Listen in Go
Um eine Funktion auf jedes Element in einer Go-Liste anzuwenden und die Ergebnisse in einer neuen Liste zu speichern Beim herkömmlichen Ansatz wird die Eingabeliste in einer Schleife durchlaufen und die Ergebnisse an die Ausgabeliste angehängt. Ab Go 1.18 gibt es jedoch eine prägnantere und allgemeinere Lösung: die Map-Funktion.
Die Map-Funktion benötigt eine Liste von Elementen vom Typ T und eine Funktion, die jedes Element in einen Wert vom Typ konvertiert V. Es wird eine neue Liste vom Typ []V zurückgegeben, die die Ergebnisse der Anwendung der Funktion auf jedes Element in der Eingabeliste enthält.
Hier ist ein Beispiel:
func Map[T, V any](ts []T, fn func(T) V) []V { result := make([]V, len(ts)) for i, t := range ts { result[i] = fn(t) } return result } // Usage example input := []int{4, 5, 3} outputInts := Map(input, func(item int) int { return item + 1 }) outputStrings := Map(input, func(item int) string { return fmt.Sprintf("Item:%d", item) })
In diesem Beispiel Eingabe ist eine Liste von ganzen Zahlen. Wir können die Map-Funktion mit zwei verschiedenen Funktionen anwenden, um eine Liste inkrementierter Ganzzahlen (outputInts) und eine Liste formatierter Zeichenfolgen (outputStrings) zu erstellen. Dies macht eine explizite Schleife überflüssig und bietet eine prägnante und effiziente Alternative zum herkömmlichen Ansatz.
Das obige ist der detaillierte Inhalt vonWie kann ich eine Funktion effizient auf jedes Element in einer Go-Liste anwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!