将 Weekday 字符串转换为 time.Weekday
在 Go 中,不直接支持将星期几字符串转换为 time.Weekday 值通过内置的时间包。为了解决这个问题,用户经常实现自定义函数来进行转换。
使用数组的自定义函数
一种方法是创建一个数组,将星期几字符串映射到时间。工作日值。然而,由于需要线性搜索才能找到相应的工作日,此方法可能效率较低。
使用地图改进功能
更有效的解决方案是使用地图而不是数组。这允许更快的查找和更简单的实现。通过使用星期字符串及其对应的 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中文网其他相关文章!