首頁  >  文章  >  後端開發  >  如何在 Go 中將星期幾字串轉換為「time.Weekday」?

如何在 Go 中將星期幾字串轉換為「time.Weekday」?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-31 04:38:30701瀏覽

How to Convert a Day of Week String to `time.Weekday` in Go?

將星期幾字串轉換為時間。 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中文網其他相關文章!

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