ホームページ >バックエンド開発 >Golang >曜日の文字列表現を「time.Weekday」値に変換するにはどうすればよいですか?

曜日の文字列表現を「time.Weekday」値に変換するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-30 17:55:03415ブラウズ

How to Convert a String Representation of a Day of Week into a `time.Weekday` Value?

曜日の文字列表現を time.Weekday Value に解析します

問題:

日を表す文字列の変換週の値を同等の時間に変換します。平日の値には課題があります。時間パッケージには、この変換のための組み込み機能が含まれていません。

初期の解決策:

最初のアプローチは、配列を利用して日間のマッピングを保存することです。週の文字列とそれに対応する time.Weekday 値。例:

<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>

推奨される最適化:

この変換の効率と明確性を高めるために、配列の代わりにマップを使用することをお勧めします。マップにより検索が高速化され、パフォーマンスが向上します。

<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>

ヒント:

堅牢なソリューションの場合、for ループを使用して daysOfWeek を安全に初期化できます。 map.

<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">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>

この拡張ソリューションにより、「Mon」や「Fri」などの文字列を対応する time.Weekday 値に解析できます。

以上が曜日の文字列表現を「time.Weekday」値に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。