thoas / go-funk

A modern Go utility library which provides helpers (map, find, contains, filter, ...)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

About GetOrElse

zhuxubin01 opened this issue · comments

I think GetOrElse's implementation should like this,in actuality,the most cases want to set default value when input is zero value

func GetOrElse(v interface{}, def interface{}) interface{} {
if v == nil {
return def
}

val := reflect.ValueOf(v)
if val.Kind() == reflect.Ptr {
	val = val.Elem()
}

if val.IsZero()  {
	return def
} else if val.Kind() != reflect.Ptr {
	return v
}

return val.Elem().Interface()

}

commented

send a PR to review.