將星期幾字串轉換為時間。 Weekday
在 Go 中,時間包不提供內建函數來轉換將表示一週中的某一天的字串轉換為 time.Weekday 值。因此,一個常見的解決方案是建立一個自訂函數來執行此轉換。
一種方法是使用陣列來儲存工作日名稱及其對應的時間。工作日值。然而,更有效率、更慣用的解決方案是使用映射。
使用映射進行轉換:
與陣列相比,映射提供更快、更直接的查找。以下是示範此方法的程式碼片段:
<code class="go">var daysOfWeek = map[string]time.Weekday{ "Sunday": time.Sunday, "Monday": time.Monday, // ... and so on for all weekdays } 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>
安全初始化映射:
為了確保正確初始化,您可以使用for 循環來填充daysOfWeek 映射:
<code class="go">var daysOfWeek = map[string]time.Weekday{} func init() { for d := time.Sunday; d <= time.Saturday; d++ { daysOfWeek[d.String()] = d } }</code>
擴充轉換:
以地圖為基礎的解決方案可以輕鬆擴充。例如,您可以新增3 個字母的短工作日名稱作為有效輸入:
<code class="go">func init() { // ... existing initialization code for d := time.Sunday; d <= time.Saturday; d++ { name := d.String() daysOfWeek[name] = d daysOfWeek[name[:3]] = d } }</code>
結論:
在Go 中使用映射進行工作日字串轉換既是高效靈活。它允許輕鬆查找、安全初始化和直接擴展以適應替代輸入格式。
以上是如何在 Go 中將星期幾字串轉換為「time.Weekday」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!