首頁  >  文章  >  後端開發  >  如何在 Go 中將工作日字串轉換為 time.Weekday?

如何在 Go 中將工作日字串轉換為 time.Weekday?

Barbara Streisand
Barbara Streisand原創
2024-10-31 10:26:02748瀏覽

How to Convert a Weekday String to time.Weekday in Go?

將Weekday 字串轉換為time.Weekday

在Go 中,不直接支援將星期幾字串轉換為time.Weekday值通過內建的時間包。為了解決這個問題,使用者經常實作自訂函數來進行轉換。

使用陣列的自訂函數

一種方法是建立一個數組,將星期幾字串對應到時間。工作日值。然而,由於需要線性搜尋才能找到相應的工作日,此方法可能效率較低。

使用地圖來改善功能

更有效的解決方案是使用地圖而不是陣列。這允許更快的查找和更簡單的實現。透過使用星期字串及其對應的 time.Weekday 值的鍵值對初始化映射,該函數可以執行直接查找以獲得所需的 time.Weekday 值。

範例實作:

<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">fmt.Println(parseWeekday("Monday")) // Output: Monday <nil>
fmt.Println(parseWeekday("Friday")) // Output: Friday <nil>
fmt.Println(parseWeekday("Invalid")) // Output: Sunday invalid weekday 'Invalid'</code>

解析名稱的擴充名稱:

此外,地圖基於的方法可以擴展為透過使用完整名稱和短名稱初始化地圖來解析短工作日名稱(例如,「Mon」表示星期一)。

結論

使用基於地圖的方法將工作日字串轉換為時間。工作日值是 Golang 中建議的慣用技術。它提供更快的查找速度和處理完整和短工作日名稱的靈活性。

以上是如何在 Go 中將工作日字串轉換為 time.Weekday?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn