@@ -100,6 +100,11 @@ func Equal(a, b interface{}) bool {
100
100
case time.Time:
101
101
return x.Equal(y)
102
102
}
103
+ case time.Duration:
104
+ switch y := b.(type) {
105
+ case time.Duration:
106
+ return x == y
107
+ }
103
108
}
104
109
if IsNil(a) && IsNil(b) {
105
110
return true
@@ -120,6 +125,11 @@ func Less(a, b interface{}) bool {
120
125
case time.Time:
121
126
return x.Before(y)
122
127
}
128
+ case time.Duration:
129
+ switch y := b.(type) {
130
+ case time.Duration:
131
+ return x < y
132
+ }
123
133
}
124
134
panic(fmt.Sprintf("invalid operation: %T < %T", a, b))
125
135
}
@@ -137,6 +147,11 @@ func More(a, b interface{}) bool {
137
147
case time.Time:
138
148
return x.After(y)
139
149
}
150
+ case time.Duration:
151
+ switch y := b.(type) {
152
+ case time.Duration:
153
+ return x > y
154
+ }
140
155
}
141
156
panic(fmt.Sprintf("invalid operation: %T > %T", a, b))
142
157
}
@@ -154,6 +169,11 @@ func LessOrEqual(a, b interface{}) bool {
154
169
case time.Time:
155
170
return x.Before(y) || x.Equal(y)
156
171
}
172
+ case time.Duration:
173
+ switch y := b.(type) {
174
+ case time.Duration:
175
+ return x <= y
176
+ }
157
177
}
158
178
panic(fmt.Sprintf("invalid operation: %T <= %T", a, b))
159
179
}
@@ -171,6 +191,11 @@ func MoreOrEqual(a, b interface{}) bool {
171
191
case time.Time:
172
192
return x.After(y) || x.Equal(y)
173
193
}
194
+ case time.Duration:
195
+ switch y := b.(type) {
196
+ case time.Duration:
197
+ return x >= y
198
+ }
174
199
}
175
200
panic(fmt.Sprintf("invalid operation: %T >= %T", a, b))
176
201
}
@@ -192,6 +217,8 @@ func Add(a, b interface{}) interface{} {
192
217
switch y := b.(type) {
193
218
case time.Time:
194
219
return y.Add(x)
220
+ case time.Duration:
221
+ return x + y
195
222
}
196
223
}
197
224
panic(fmt.Sprintf("invalid operation: %T + %T", a, b))
@@ -204,6 +231,13 @@ func Subtract(a, b interface{}) interface{} {
204
231
switch y := b.(type) {
205
232
case time.Time:
206
233
return x.Sub(y)
234
+ case time.Duration:
235
+ return x.Add(-y)
236
+ }
237
+ case time.Duration:
238
+ switch y := b.(type) {
239
+ case time.Duration:
240
+ return x - y
207
241
}
208
242
}
209
243
panic(fmt.Sprintf("invalid operation: %T - %T", a, b))
0 commit comments