Home > Article > Backend Development > How to Convert a Weekday String to time.Weekday in Go?
Convert Weekday String to time.Weekday
In Go, converting a day of week string to a time.Weekday value is not directly supported by the built-in time package. To address this, users often implement custom functions for the conversion.
Custom Function Using Array
One approach is to create an array mapping day of week strings to time.Weekday values. However, this method can be inefficient due to the linear search required to find the corresponding weekday.
Improved Function Using Map
A more efficient solution is to use a map instead of an array. This allows for faster lookups and more straightforward implementation. By initializing the map with key-value pairs of day of week strings and their corresponding time.Weekday values, the function can perform a direct lookup to obtain the desired time.Weekday value.
Example Implementation:
<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>
Testing:
<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>
Extension to Parse Short Names
Additionally, the map-based approach can be extended to parse short weekday names (e.g., "Mon" for Monday) by initializing the map with both the full and short names.
Conclusion
Using a map-based approach for converting weekday strings to time.Weekday values is a recommended and idiomatic technique in Golang. It offers faster lookups and flexibility for handling both full and short weekday names.
The above is the detailed content of How to Convert a Weekday String to time.Weekday in Go?. For more information, please follow other related articles on the PHP Chinese website!