Golangs seltsamer Mangel an festgelegter Datenstruktur
In Golang hat das grundlegende Bedürfnis nach einer festgelegten Datenstruktur zu der rätselhaften Frage geführt: Warum ist das nicht nativ vorgesehen? Warum haben die Designer von Golang, inspiriert von Googles einflussreicher Guava-Bibliothek, die Unterstützung für eine so grundlegende Struktur weggelassen und Entwickler gezwungen, ihre eigenen Implementierungen zu erstellen?
Die Antwort liegt in der Einfachheit der Konstruktion von Sets mithilfe von Karten. Wie im bereitgestellten Codeausschnitt gezeigt, können Karten zum Erstellen von Sets genutzt werden. Schlüsseloperationen wie die Prüfung auf Existenz, das Hinzufügen, Entfernen und Durchführen von Mengenoperationen (Vereinigung, Schnittmenge) können einfach implementiert werden.
s := map[int]bool{5: true, 2: true} _, ok := s[6] // check for existence s[8] = true // add element delete(s, 2) // remove element // Union s_union := map[int]bool{} for k, _ := range s1{ s_union[k] = true } for k, _ := range s2{ s_union[k] = true } // Intersection s_intersection := map[int]bool{} if len(s1) > len(s2) { s1, s2 = s2, s1 // better to iterate over a shorter set } for k,_ := range s1 { if s2[k] { s_intersection[k] = true } }
Während diese kartenbasierten Implementierungen für die meisten praktischen Szenarien ausreichend sind, könnten einige argumentieren, dass eine native Set-Implementierung die Lesbarkeit des Codes vereinfachen und verbessern würde. Dennoch ist für Golang-Entwickler das Verständnis der Verwendung von Karten als Mengen sowohl für die Problemlösung als auch für die effiziente Ressourcennutzung von entscheidender Bedeutung.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3