fix: refactor layout init
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"os"
|
||||
"reflect"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func GetOrDefault[T any](key string, defaultValue T) T {
|
||||
value, exist := os.LookupEnv(key)
|
||||
|
||||
if !exist {
|
||||
return defaultValue
|
||||
}
|
||||
|
||||
var valueInstance T
|
||||
kind := reflect.ValueOf(valueInstance).Kind()
|
||||
switch kind {
|
||||
case reflect.String:
|
||||
return any(value).(T)
|
||||
case reflect.Int:
|
||||
if val, err := strconv.Atoi(value); err == nil {
|
||||
return any(val).(T)
|
||||
}
|
||||
return any(defaultValue).(T)
|
||||
case reflect.Bool:
|
||||
if val, err := strconv.ParseBool(value); err == nil {
|
||||
return any(val).(T)
|
||||
}
|
||||
return any(defaultValue).(T)
|
||||
default:
|
||||
return any(defaultValue).(T)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user