Heim >Backend-Entwicklung >Golang >Wie kann ich mithilfe einer generischen Funktion Arrays von Objekten in Go effizient zuordnen?

Wie kann ich mithilfe einer generischen Funktion Arrays von Objekten in Go effizient zuordnen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-28 18:24:20595Durchsuche

How Can I Efficiently Map Arrays of Objects in Go Using a Generic Function?

Arrays von Objekten mithilfe einer generischen Funktion zuordnen

In Go unterliegen Funktionen, die auf Arrays arbeiten, aufgrund ihrer Unflexibilität und dem damit verbundenen Overhead bestimmten Einschränkungen mit Kopierargumenten. In diesem Artikel wird ein Ansatz zur präzisen Zuordnung von Arrays von Objekten mithilfe einer generischen Funktion der obersten Ebene untersucht.

Einzeilige Lösung mithilfe einer generischen Funktion

Zur Zuordnung eines Arrays von Objekten in Go Mit einem Einzeiler können Sie eine generische Funktion namens Map wie folgt definieren:

func Map[T, U any](ts []T, f func(T) U) []U {
    us := make([]U, len(ts))
    for i := range ts {
        us[i] = f(ts[i])
    }
    return us
}

Diese Funktion akzeptiert ein Array vom Typ T und eine Funktion f, die einen Parameter vom Typ T akzeptiert und gibt einen Wert vom Typ U zurück. Es gibt ein Array vom Typ U zurück, das die zugeordneten Werte enthält.

Verwendung

Um ein Array von Objekten zuzuordnen, können Sie die Map-Funktion wie folgt verwenden:

names := []string{"Alice", "Bob", "Carol"}
fmt.Println(Map(names, utf8.RuneCountInString))

Dieser Code gibt die folgende Ausgabe aus stdout:

[5 3 5]

Überlegungen

Die Map-Funktion basiert auf einer Schleife und kann im Vergleich zu nativen Funktionen, die auf Arrays arbeiten, einen Mehraufwand verursachen. Es ist wichtig, die Vorteile einer prägnanten Syntax gegen die möglichen Auswirkungen auf die Leistung abzuwägen.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe einer generischen Funktion Arrays von Objekten in Go effizient zuordnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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