Optimieren des Codes für das gemeinsame Verhalten von Sammlungs-Slices
Im Kontext der Arbeit mit Sammlungen halboffener Intervalle, wie z. B. Uhren und Perioden, Ein Hauptanliegen besteht darin, das einschließende Intervall für eine bestimmte Zeit für beide Intervalltypen zu finden. Diese sich wiederholende Aufgabe erfordert eine effiziente Möglichkeit, ein gemeinsames Verhalten für diese zu definieren Sammlungen.
Überlegungen zur Konvertierung
Ein Ansatz besteht darin, einen Slice-Typ in einen anderen zu konvertieren. Die empfohlene Methode besteht jedoch darin, einen neuen Slice zu erstellen und jedes Element explizit zu konvertieren. Zum Beispiel, um ein Stück von ClockIntervals in umzuwandeln HalfOpenIntervals:
func ToIntervalsFromClockIntervals(clockIntervals []ClockInterval) HalfOpenIntervals { intervals := make(HalfOpenIntervals, 0, len(clockIntervals)) for _, clockInterval := range clockIntervals { intervals = append(intervals, clockInterval) } return intervals }
Komposition nutzen
Ein alternativer Ansatz besteht darin, Komposition zu verwenden, um die Duplizierung von Code zu vermeiden. Erstellen Sie die Grundstruktur BasicInterval, die die Implementierung der Sortier- und GetEnclosingInterval-Funktionen enthält. ClockIntervals und PeriodIntervals erben BasicInterval und verfügen über praktische Methoden, die auf interne Slices verweisen.
Vermeidung einer Übergeneralisierung
Es ist wichtig zu beachten, dass eine übermäßige Verallgemeinerung zu Komplexität führen und die Lesbarkeit des Codes in Go verringern kann. In einigen Fällen kann es pragmatischer sein, eine gewisse Duplizierung zu akzeptieren Dieser Ansatz kann auf lange Sicht oft zu saubererem und besser wartbarem Code führen.
Das obige ist der detaillierte Inhalt vonWie können wir Go-Code für die Suche nach einschließenden Intervallen in verschiedenen Sammlungstypen optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!