Heim > Artikel > Backend-Entwicklung > Wie finde ich eindeutige Elemente in einem Go-Slice oder -Array?
Eindeutige Elemente in einem Go-Slice oder -Array finden
Beim Umgang mit Daten in Go kann es notwendig sein, nur die eindeutigen Elemente zu extrahieren aus einem Slice oder Array. Während Python für diesen Zweck praktische Konstrukte wie Mengen bereitstellt, bietet Go von Haus aus keine ähnliche integrierte Funktionalität.
Betrachten Sie den in der Frage bereitgestellten Beispielcode, bei dem die eindeutigen Koordinaten aus einer Liste ermittelt werden sollen enthält Duplikate. Der Code versucht dies zu erreichen, indem er sowohl die ursprüngliche Liste (besucht) als auch die anfänglich leere eindeutige Liste durchläuft und dabei jedes besuchte Element mithilfe von Reflektion mit allen Elementen in eindeutigem Zustand vergleicht.
Codeanalyse und Fehler
Der Code enthält jedoch mehrere Probleme:
Verbesserte Lösung
Eine vereinfachte und effizientere Lösung, die der gewünschten Logik folgt, wird unten vorgestellt:
<code class="go">visited := []visit{ visit{1, 100}, visit{2, 2}, visit{1, 100}, visit{1, 1}, } var unique []visit for _, v := range visited { skip := false for _, u := range unique { if v == u { skip = true break } } if !skip { unique = append(unique, v) } } fmt.Println(unique)</code>
Alternative Lösung mit Karte
Alternativ kann man Gos Karte nutzen[besuch] bool, um eine satzartige Struktur zu erstellen und die eindeutigen Elemente wie folgt zu extrahieren:
<code class="go">visited := []visit{ visit{1, 100}, visit{2, 2}, visit{1, 100}, visit{1, 1}, } unique := map[visit]bool{} for _, v := range visited { unique[v] = true } fmt.Println(unique)</code>
Die Kartenschlüssel repräsentieren die eindeutigen Elemente. Um einen Abschnitt eindeutiger Besuchswerte zu erhalten, ist ein zusätzlicher Schritt erforderlich:
<code class="go">visited := []visit{ visit{1, 100}, visit{2, 2}, visit{1, 100}, visit{1, 1}, } var unique []visit m := map[visit]bool{} for _, v := range visited { if !m[v] { m[v] = true unique = append(unique, v) } } fmt.Println(unique)</code>
Diese Lösungen finden effektiv die eindeutigen Elemente in einem Go-Slice oder -Array, halten sich an die Problemstellung und bieten beim Erstellen effiziente Alternativen. Im Set fehlt die Funktionalität.
Das obige ist der detaillierte Inhalt vonWie finde ich eindeutige Elemente in einem Go-Slice oder -Array?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!