Heim >Backend-Entwicklung >Golang >Wie kann ich ein Array von Objekten in Go effizient zuordnen?

Wie kann ich ein Array von Objekten in Go effizient zuordnen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-19 11:44:10458Durchsuche

How Can I Efficiently Map an Array of Objects in Go?

Zuordnen eines Arrays von Objekten in Go

In Node.js können Sie die Map-Funktion verwenden, um ein Array von Objekten in ein Array umzuwandeln Array von Werten. Sie fragen sich, wie Sie dies in Go präzise erreichen können?

Go-Lösung: Karte als Top-Level-Funktion

Im Gegensatz zu Methoden in Go können Top-Level-Funktionen zusätzliche Funktionen benötigen Geben Sie Argumente ein. Damit können wir Map als generische Funktion 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
}

Jetzt können Sie diese Funktion wie folgt verwenden:

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

Historischer Kontext: Warum die Karte nicht vorhanden ist in Standard-Go-Bibliotheken

Vor Go 1.18 ausführliche Diskussionen in der GitHub-Ausgabe für Der Vorschlag von golang.org/x/exp/slices erwog das Hinzufügen einer Kartenfunktion, entschied sich aber letztendlich dagegen, weil Bedenken hinsichtlich:

  • Versteckte Betriebskosten innerhalb von Einzeilern
  • Unsicherer Fehler Handhabung innerhalb von Map
  • Förderung eines Stils, der vom traditionellen Ansatz von Go abweicht

Streams-API gilt als potenzielles zukünftiges Zuhause für eine solche Funktion.

Das obige ist der detaillierte Inhalt vonWie kann ich ein Array 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