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

Mary-Kate Olsen
リリース: 2024-10-31 04:38:30
オリジナル
711 人が閲覧しました

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

曜日文字列を時間に変換します。Weekday

Go では、時間パッケージには変換するための組み込み関数がありません曜日を表す文字列を time.Weekday 値に変換します。したがって、一般的な解決策は、この変換を実行するカスタム関数を作成することです。

1 つのアプローチは、配列を使用して曜日名とそれに対応する 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!