平日文字列を時間に解析します。平日: マップを使用した慣用的アプローチ
平日文字列を対応する時間に変換します。平日の値Go にはこの変換用の機能が組み込まれていないため、カスタム ソリューションが必要です。提示された配列ベースの関数は実行可能なソリューションを提供しますが、マップベースのアプローチには効率と柔軟性の点で利点があります。
マップを使用した拡張ソリューション
を使用する代わりにキーとして平日の文字列とそれに対応する時間を含むマップを利用する配列。平日の値を値として使用すると、検索が大幅に高速化され、コードが簡素化されます。
<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">var daysOfWeek = map[string]time.Weekday{} func init() { for d := time.Sunday; d <= time.Saturday; d++ { daysOfWeek[d.String()] = d } }</code>
追加入力のためのマップの展開
このマップベースのアプローチでは、time.Weekday に解析できる新しい有効な値を柔軟に追加することもできます。たとえば、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>
この拡張機能を使用すると、完全な曜日名 (例: 「Monday」) と短い曜日名 (例: 「Mon」) の両方を解析できます。 ") into time.Weekday.
このコンテキストでマップを使用すると、Go で平日の文字列を time.Weekday の値に解析する、より速く、より便利で、拡張可能な方法が提供されます。
以上がGo で平日の文字列を time.Weekday に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。