> 백엔드 개발 > Golang > Go에서 Weekday 문자열을 time.Weekday로 어떻게 효율적으로 변환합니까?

Go에서 Weekday 문자열을 time.Weekday로 어떻게 효율적으로 변환합니까?

Linda Hamilton
풀어 주다: 2024-10-31 13:10:34
원래의
290명이 탐색했습니다.

How Do I Convert Weekday Strings to time.Weekday in Go Efficiently?

요일 문자열을 시간으로 구문 분석합니다.Weekday: 맵을 사용한 관용적 접근 방식

요일 문자열을 해당 시간으로 변환합니다. 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>
로그인 후 복사

지도 기반 접근 방식의 이점

  • 빠른 조회: 지도는 O(1) 조회 시간을 제공하므로 배열을 반복하는 것보다 더 효율적입니다.
  • 간단한 초기화: 특히 다음 예에 표시된 것처럼 for 루프를 사용하면 맵을 초기화하는 것이 더 쉽습니다.
<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>
로그인 후 복사

이 확장을 사용하면 전체 요일 이름(예: "월요일")과 짧은 요일 이름(예: "월")을 모두 구문 분석할 수 있습니다. ")를 time.Weekday.

이러한 맥락에서 지도를 사용하면 Go에서 평일 문자열을 time.Weekday 값으로 구문 분석하는 더 빠르고 편리하며 확장 가능한 방법이 제공됩니다.

위 내용은 Go에서 Weekday 문자열을 time.Weekday로 어떻게 효율적으로 변환합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿