將工作日字串解析為time.Weekday:使用Map 的慣用方法
將工作日字串轉換為對應的time .Weekday 值Go 需要自訂解決方案,因為沒有用於此轉換的內建功能。雖然所提出的基於數組的函數提供了可行的解決方案,但基於地圖的方法在效率和靈活性方面具有優勢。
使用地圖的增強解決方案
而不是使用一個數組,利用以工作日字符串作為鍵及其相應時間的映射。工作日值作為值可顯著加快查找速度並簡化代碼:
<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>
基於地圖的方法的優點
<code class="go">var daysOfWeek = map[string]time.Weekday{} func init() { for d := time.Sunday; d <= time.Saturday; d++ { daysOfWeek[d.String()] = d } }</code>
擴充映射以獲取其他輸入
這種基於地圖的方法還允許靈活添加可解析為time.Weekday 的新有效值。例如,簡短的3 個字母的工作日名稱可以包含在一個簡單的循環中:
<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>
此擴充功能允許解析完整的工作日名稱(例如“Monday”)和短的工作日名稱(例如“Mon”) ") 轉換為time.Weekday。
在此上下文中使用映射提供了一種更快、更方便且可擴展的方式來將工作日字串解析為Go 中的time.Weekday 值。
以上是如何在 Go 中高效地將 Weekday 字串轉換為 time.Weekday?的詳細內容。更多資訊請關注PHP中文網其他相關文章!