


Detaillierte Erläuterung der Verwendung der Go-Sprache zum Finden von Ähnlichkeiten und Unterschieden zwischen zwei Arrays
Die folgende Tutorial-Kolumne von golang stellt Ihnen die Gemeinsamkeiten und Unterschiede der Verwendung der Go-Sprache zum Finden zweier Arrays vor. Ich hoffe, dass sie Freunden in Not hilfreich sein wird!
Ich bin kürzlich auf eine kleine Anforderung in einem Projekt gestoßen. Die Eingabe besteht aus zwei Arrays, einem alten Array und einem neuen Array. Es ist erforderlich, alle neuen und gelöschten Elemente des neuen Arrays abzurufen Das alte Array, zum Beispiel:
rrreeIn der Standardbibliothek von Go gibt es keine ähnliche direkte Vergleichsmethode. Die einfachste Methode besteht natürlich darin, für jedes Element des alten Arrays zu wechseln Wenn es nicht gefunden wird, löschen Sie es und fügen Sie dann nacheinander die Elemente des neuen Arrays hinzu und suchen Sie danach. Wenn Sie es nicht finden können, ist diese Methode zu ineffizient .
Hier verwende ich eine Idee, die auf Mengenoperationen basiert, das heißt, den Schnittpunkt bzw. die Vereinigung zweier Arrays zu finden. Die Vereinigung minus dem Schnittpunkt sind alle geänderten Elemente (entweder neu oder gelöscht), die Elemente in dieser Sammlung durchlaufen und im alten Array suchen, dann ist es das gelöschte Element; wenn es nicht gefunden wird, wird es definitiv im neuen Array gefunden (es besteht keine Notwendigkeit, es tatsächlich erneut zu durchlaufen). . einmal), dann ist es ein neues Element.
Der obige Code ist hier ein Trick, der darin besteht, die Einzigartigkeit der Kartenschlüssel in Go zu nutzen, die Elemente des Arrays als Schlüssel der Karte zu verwenden und eine schnelle Suche durch die Karte zu erreichen.
输入: arr_old: {"1", "2", "4", "5", "7", "9"} arr_new: {"2", "3", "4", "6", "7"} 返回: arr_added: {"3", "6"} arr_deleted: {"1", "5", "9"}
Operationsergebnisse:
package main import ( "fmt" ) func main() { //fmt.Println("Hello World!") src := []string{"1", "2", "4", "5", "7", "9"} dest := []string{"2", "3", "4", "6", "7"} added, removed := Arrcmp(src, dest) fmt.Printf("add: %v\nrem: %v\n", added, removed) } func Arrcmp(src []string, dest []string) ([]string, []string) { msrc := make(map[string]byte) //按源数组建索引 mall := make(map[string]byte) //源+目所有元素建索引 var set []string //交集 //1.源数组建立map for _, v := range src { msrc[v] = 0 mall[v] = 0 } //2.目数组中,存不进去,即重复元素,所有存不进去的集合就是并集 for _, v := range dest { l := len(mall) mall[v] = 1 if l != len(mall) { //长度变化,即可以存 l = len(mall) } else { //存不了,进并集 set = append(set, v) } } //3.遍历交集,在并集中找,找到就从并集中删,删完后就是补集(即并-交=所有变化的元素) for _, v := range set { delete(mall, v) } //4.此时,mall是补集,所有元素去源中找,找到就是删除的,找不到的必定能在目数组中找到,即新加的 var added, deleted []string for v, _ := range mall { _, exist := msrc[v] if exist { deleted = append(deleted, v) } else { added = append(added, v) } } return added, deleted }
Willkommen zum Austausch effizienterer Methoden.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung der Go-Sprache zum Finden von Ähnlichkeiten und Unterschieden zwischen zwei Arrays. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Das Problem der Verwendung von RETISTREAM zur Implementierung von Nachrichtenwarteschlangen in der GO -Sprache besteht darin, die Go -Sprache und Redis zu verwenden ...

Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Bei der Verwendung von Goland für GO -Sprachentwicklung begegnen viele Entwickler benutzerdefinierte Struktur -Tags ...

Das Problem der Warteschlange Threading In Go Crawler Colly untersucht das Problem der Verwendung der Colly Crawler Library in Go -Sprache. Entwickler stoßen häufig auf Probleme mit Threads und Anfordern von Warteschlangen. � ...

Der Unterschied zwischen Stringdruck in GO -Sprache: Der Unterschied in der Wirkung der Verwendung von Println und String () ist in Go ...

In der Bibliothek, die für den Betrieb der Schwimmpunktnummer in der GO-Sprache verwendet wird, wird die Genauigkeit sichergestellt, wie die Genauigkeit ...

Zwei Möglichkeiten, Strukturen in der GO -Sprache zu definieren: Der Unterschied zwischen VAR- und Typ -Schlüsselwörtern. Bei der Definition von Strukturen sieht die Sprache oft zwei verschiedene Schreibweisen: Erstens ...

Welche Bibliotheken in GO werden von großen Unternehmen oder bekannten Open-Source-Projekten entwickelt? Bei der Programmierung in Go begegnen Entwickler häufig auf einige häufige Bedürfnisse, ...

Warum meldet der DSN bei Verwendung von SQL.Open keinen Fehler? In Go Language, Sql.open ...
