@@ -229,6 +229,39 @@ func int8SliceOrDefault(key string, defaultVal []int8, sep string) []int8 {
229229 return val
230230}
231231
232+ func floatOrDefaultGen [T float32 | float64 ](key string , defaultVal T ) T {
233+ env := stringOrDefault (key , "" )
234+ if env == "" {
235+ return defaultVal
236+ }
237+
238+ const (
239+ bitsize = 64
240+ )
241+
242+ var (
243+ castFn func (val float64 ) T
244+ )
245+
246+ switch any (defaultVal ).(type ) {
247+ case float32 :
248+ castFn = func (val float64 ) T {
249+ return any (float32 (val )).(T )
250+ }
251+ case float64 :
252+ castFn = func (val float64 ) T {
253+ return any (val ).(T )
254+ }
255+ }
256+
257+ val , err := strconv .ParseFloat (env , bitsize )
258+ if err != nil {
259+ return defaultVal
260+ }
261+
262+ return castFn (val )
263+ }
264+
232265func intOrDefaultGen [T int | int8 | int16 | int32 | int64 ](key string , defaultVal T ) T {
233266 env := stringOrDefault (key , "" )
234267 if env == "" {
@@ -416,48 +449,6 @@ func durationSliceOrDefault(key string, defaultVal []time.Duration, separator st
416449 return val
417450}
418451
419- // float32OrDefault retrieves the float32 value of the environment variable named
420- // by the key.
421- // If variable not set or value is empty - defaultVal will be returned.
422- func float32OrDefault (key string , defaultVal float32 ) float32 {
423- env := stringOrDefault (key , "" )
424- if env == "" {
425- return defaultVal
426- }
427-
428- const (
429- bitsize = 32
430- )
431-
432- val , err := strconv .ParseFloat (env , bitsize )
433- if err != nil {
434- return defaultVal
435- }
436-
437- return float32 (val )
438- }
439-
440- // float64OrDefault retrieves the float64 value of the environment variable named
441- // by the key.
442- // If variable not set or value is empty - defaultVal will be returned.
443- func float64OrDefault (key string , defaultVal float64 ) float64 {
444- env := stringOrDefault (key , "" )
445- if env == "" {
446- return defaultVal
447- }
448-
449- const (
450- bitsize = 64
451- )
452-
453- val , err := strconv .ParseFloat (env , bitsize )
454- if err != nil {
455- return defaultVal
456- }
457-
458- return val
459- }
460-
461452// uint64OrDefault retrieves the unt64 value of the environment variable named
462453// by the key.
463454// If variable not set or value is empty - defaultVal will be returned.
0 commit comments