Go で平日文字列を time.Weekday に変換する方法?

Barbara Streisand
リリース: 2024-10-31 10:26:02
オリジナル
746 人が閲覧しました

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

曜日文字列を時刻に変換します。平日

Go では、曜日文字列を時刻に変換します。曜日値は直接サポートされていません。内蔵の時間パッケージによって。これに対処するために、ユーザーは変換用のカスタム関数を実装することがよくあります。

配列を使用したカスタム関数

1 つの方法は、曜日文字列を時刻にマッピングする配列を作成することです。平日の値。ただし、この方法は、対応する曜日を見つけるために線形検索が必要なため、非効率的になる可能性があります。

マップを使用した機能の改善

より効率的な解決策は、マップを使用することです。配列の代わりに。これにより、検索が高速になり、実装がより簡単になります。曜日文字列とそれに対応する 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート