Heim > Artikel > Backend-Entwicklung > Wie konvertiere ich eine String-Darstellung eines Wochentags in einen „time.Weekday“-Wert?
Problem:
Konvertieren einer Zeichenfolge, die einen Tag darstellt der Woche in eine äquivalente Zeit umwandeln. Der Wochentagswert stellt eine Herausforderung dar. Das Zeitpaket enthält keine integrierte Funktionalität für diese Konvertierung.
Erste Lösung:
Ein erster Ansatz besteht darin, ein Array zum Speichern der Zuordnung zwischen den Tagen zu verwenden von Wochenzeichenfolgen und ihren entsprechenden time.Weekday-Werten. Zum Beispiel:
<code class="go">var daysOfWeek = [...]string{ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", } func parseWeekday(v string) (time.Weekday, error) { for i := range daysOfWeek { if daysOfWeek[i] == v { return time.Weekday(i), nil } } return time.Sunday, fmt.Errorf("invalid weekday '%s'", v) }</code>
Empfohlene Optimierung:
Um die Effizienz und Klarheit dieser Konvertierung zu verbessern, wird eine Karte anstelle eines Arrays empfohlen. Karten ermöglichen schnellere Suchvorgänge, was zu einer verbesserten Leistung führt.
<code class="go">var daysOfWeek = map[string]time.Weekday{ "Sunday": time.Sunday, "Monday": time.Monday, "Tuesday": time.Tuesday, "Wednesday": time.Wednesday, "Thursday": time.Thursday, "Friday": time.Friday, "Saturday": time.Saturday, } func parseWeekday(v string) (time.Weekday, error) { if d, ok := daysOfWeek[v]; ok { return d, nil } return time.Sunday, fmt.Errorf("invalid weekday '%s'", v) }</code>
Tipp:
Für eine robuste Lösung kann eine for-Schleife verwendet werden, um die Tage der Woche sicher zu initialisieren Karte.
<code class="go">var daysOfWeek = map[string]time.Weekday{} func init() { for d := time.Sunday; d <= time.Saturday; d++ { daysOfWeek[d.String()] = d } }</code>
Zusätzliche Parsing-Flexibilität:
Die kartenbasierte Lösung bietet einen Vorteil gegenüber dem Array-basierten Ansatz. Durch das Hinzufügen zusätzlicher Schlüssel-Wert-Paare zur Karte können zusätzliche gültige Werte geparst werden, ohne die Parsing-Logik zu ändern.
Um beispielsweise sowohl den vollständigen Namen als auch den aus drei Buchstaben bestehenden Kurznamen von Wochentagen zu analysieren, kann die Karte verwendet werden wie folgt erweitert:
<code class="go">var daysOfWeek = map[string]time.Weekday{} func init() { for d := time.Sunday; d <= time.Saturday; d++ { name := d.String() daysOfWeek[name] = d daysOfWeek[name[:3]] = d } }</code>
Diese erweiterte Lösung ermöglicht das Parsen von Zeichenfolgen wie „Mo“ oder „Fri“ in ihre entsprechenden time.Weekday-Werte.
Das obige ist der detaillierte Inhalt vonWie konvertiere ich eine String-Darstellung eines Wochentags in einen „time.Weekday“-Wert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!