Wie entferne ich effizient doppelte Einträge aus einem Slice in Go?

Patricia Arquette
Freigeben: 2024-11-02 01:53:02
Original
755 Leute haben es durchsucht

How to Efficiently Remove Duplicate Entries from a Slice in Go?

Duplikate aus einem Slice löschen

Ihr Ziel ist es, doppelte Peers aus einer Textdatei zu entfernen, in der jeder Peer durch eine Adresse und PeerID gekennzeichnet ist. Der bereitgestellte Code bewältigt diese Aufgabe effektiv, beim Löschen des letzten Duplikats tritt jedoch ein Fehler auf. Um dieses Problem zu lösen, wird ein überarbeiteter Ansatz vorgestellt.

Deklarieren Sie zunächst eine Variable i und initialisieren Sie sie auf 0. Diese Variable verfolgt den Index des letzten nicht duplizierten Peers im cfg.Bootstrap-Slice. Anschließend durchlaufen Sie den Slice mit einer bereichsbasierten for-Schleife.

Überprüfen Sie innerhalb der Schleife, ob die Adresse und PeerID des aktuellen Peers mit denen des zu entfernenden Peers übereinstimmen. Wenn dies der Fall ist, überspringen Sie den aktuellen Peer. Andernfalls weisen Sie den aktuellen Peer cfg.Bootstrap[i] zu und erhöhen i.

Nach Abschluss der Schleife enthält cfg.Bootstrap[i:] nur die doppelten Peers, die entfernt werden müssen. Um diese überschüssigen Werte zu reduzieren, weisen Sie cfg.Bootstrap[:i] wieder cfg.Bootstrap zu.

Hier ist der überarbeitete Codeausschnitt:

<code class="go">i := 0
for _, v := range cfg.Bootstrap {
   if v.PeerId == peer.PeerId &amp;&amp; v.Address == peer.Address {
      continue
   }
   cfg.Bootstrap[i] = v
   i++
}
cfg.Bootstrap = cfg.Bootstrap[:i]</code>
Nach dem Login kopieren

Dieser überarbeitete Ansatz löscht effizient alle doppelten Peers. einschließlich derjenigen an letzter Stelle.

Das obige ist der detaillierte Inhalt vonWie entferne ich effizient doppelte Einträge aus einem Slice in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!