문제:
요일을 나타내는 문자열 변환 주중을 동일한 시간으로 변환합니다. 평일 값은 어려운 문제입니다. 시간 패키지에는 이 변환을 위한 내장 기능이 포함되어 있지 않습니다.
초기 해결 방법:
초기 접근 방식은 배열을 활용하여 요일 간의 매핑을 저장하는 것입니다. 주 문자열 및 해당 시간.요일 값. 예:
<code class="go">var daysOfWeek = [...]string{ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", } func parseWeekday(v string) (time.Weekday, error) { for i := range daysOfWeek { if daysOfWeek[i] == v { return time.Weekday(i), nil } } return time.Sunday, fmt.Errorf("invalid weekday '%s'", v) }</code>
권장 최적화:
이 변환의 효율성과 명확성을 높이려면 배열 대신 맵을 권장합니다. 지도를 사용하면 검색 속도가 빨라져 성능이 향상됩니다.
<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>
팁:
강력한 솔루션을 위해 for 루프를 사용하여 daysOfWeek를 안전하게 초기화할 수 있습니다. map.
<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">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>
이 확장 솔루션을 사용하면 "월" 또는 "금"과 같은 문자열을 해당 시간.주중 값으로 구문 분석할 수 있습니다.
위 내용은 요일의 문자열 표현을 `time.Weekday` 값으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!