From 5a2cb5f5fd0e02ed2786b18aaa325aec0611bb68 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Mon, 13 Jan 2025 08:15:04 +0200 Subject: [PATCH] more switch->map conversion Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/mysql/datetime/interval.go | 105 ++++++++++++---------------------- 1 file changed, 37 insertions(+), 68 deletions(-) diff --git a/go/mysql/datetime/interval.go b/go/mysql/datetime/interval.go index 7b6917a998e..38fc4eace7c 100644 --- a/go/mysql/datetime/interval.go +++ b/go/mysql/datetime/interval.go @@ -80,27 +80,37 @@ var intervalSet = [...]intervalSetter{ intervalSetYear, } -var namedIntervalTypes = map[string]IntervalType{ - "year": IntervalYear, - "quarter": IntervalQuarter, - "month": IntervalMonth, - "week": IntervalWeek, - "day": IntervalDay, - "hour": IntervalHour, - "minute": IntervalMinute, - "second": IntervalSecond, - "microsecond": IntervalMicrosecond, - "year_month": IntervalYearMonth, - "day_hour": IntervalDayHour, - "day_minute": IntervalDayMinute, - "day_second": IntervalDaySecond, - "hour_minute": IntervalHourMinute, - "hour_second": IntervalHourSecond, - "minute_second": IntervalMinuteSecond, - "day_microsecond": IntervalDayMicrosecond, - "hour_microsecond": IntervalHourMicrosecond, - "minute_microsecond": IntervalMinuteMicrosecond, - "second_microsecond": IntervalSecondMicrosecond, +var ( + intervalTypeNames = map[IntervalType]string{ + IntervalYear: "year", + IntervalQuarter: "quarter", + IntervalMonth: "month", + IntervalWeek: "week", + IntervalDay: "day", + IntervalHour: "hour", + IntervalMinute: "minute", + IntervalSecond: "second", + IntervalMicrosecond: "microsecond", + IntervalYearMonth: "year_month", + IntervalDayHour: "day_hour", + IntervalDayMinute: "day_minute", + IntervalDaySecond: "day_second", + IntervalHourMinute: "hour_minute", + IntervalHourSecond: "hour_second", + IntervalMinuteSecond: "minute_second", + IntervalDayMicrosecond: "day_microsecond", + IntervalHourMicrosecond: "hour_microsecond", + IntervalMinuteMicrosecond: "minute_microsecond", + IntervalSecondMicrosecond: "second_microsecond", + } + namedIntervalTypes map[string]IntervalType +) + +func init() { + namedIntervalTypes = make(map[string]IntervalType, len(intervalTypeNames)) + for itv, name := range intervalTypeNames { + namedIntervalTypes[strings.ToLower(name)] = itv + } } // setter returns the setter method for this interval's type. @@ -143,59 +153,18 @@ func (itv IntervalType) NeedsPrecision() bool { // ToString returns the type as a string func (itv IntervalType) ToString() string { - switch itv { - case IntervalYear: - return "year" - case IntervalQuarter: - return "quarter" - case IntervalMonth: - return "month" - case IntervalWeek: - return "week" - case IntervalDay: - return "day" - case IntervalHour: - return "hour" - case IntervalMinute: - return "minute" - case IntervalSecond: - return "second" - case IntervalMicrosecond: - return "microsecond" - case IntervalYearMonth: - return "year_month" - case IntervalDayHour: - return "day_hour" - case IntervalDayMinute: - return "day_minute" - case IntervalDaySecond: - return "day_second" - case IntervalHourMinute: - return "hour_minute" - case IntervalHourSecond: - return "hour_second" - case IntervalMinuteSecond: - return "minute_second" - case IntervalDayMicrosecond: - return "day_microsecond" - case IntervalHourMicrosecond: - return "hour_microsecond" - case IntervalMinuteMicrosecond: - return "minute_microsecond" - case IntervalSecondMicrosecond: - return "second_microsecond" - default: - return "[unknown IntervalType]" + if name, ok := intervalTypeNames[itv]; ok { + return name } + return "[unknown IntervalType]" } // IntervalTypeFromString parses a string into an IntervalType. This is the inverse function of IntervalType.ToString(). func IntervalTypeFromString(s string) IntervalType { - result, ok := namedIntervalTypes[strings.ToLower(s)] - if !ok { - return IntervalNone + if itv, ok := namedIntervalTypes[strings.ToLower(s)]; ok { + return itv } - return result + return IntervalNone } func intervalSetYear(tp *Interval, val int) {