go-ml.dev/pkg/base@v0.0.0-20200610162856-60c38abac71b/fu/fnz.go (about) 1 package fu 2 3 import "reflect" 4 5 /* 6 Fnz returns the first non zero value 7 */ 8 func Fnz(a ...interface{}) interface{} { 9 for _, i := range a { 10 if !reflect.ValueOf(i).IsZero() { 11 return i 12 } 13 } 14 return 0 15 } 16 17 /* 18 Fnzi returns the first non integer zero value 19 */ 20 func Fnzi(a ...int) int { 21 for _, i := range a { 22 if i != 0 { 23 return i 24 } 25 } 26 return 0 27 } 28 29 /* 30 Fnzl returns the first non zero long integer value 31 */ 32 func Fnzl(a ...int64) int64 { 33 for _, i := range a { 34 if i != 0 { 35 return i 36 } 37 } 38 return 0 39 } 40 41 /* 42 Fnzr returns the first non zero float value 43 */ 44 func Fnzr(a ...float32) float32 { 45 for _, i := range a { 46 if i != 0 { 47 return i 48 } 49 } 50 return 0 51 } 52 53 /* 54 Fnzd returns the first non zero double value 55 */ 56 func Fnzd(a ...float64) float64 { 57 for _, i := range a { 58 if i != 0 { 59 return i 60 } 61 } 62 return 0 63 } 64 65 /* 66 Fnze returns the first non nil error 67 */ 68 func Fnze(e ...error) error { 69 for _, i := range e { 70 if i != nil { 71 return i 72 } 73 } 74 return nil 75 } 76 77 /* 78 Fnzs returns the first non empty string 79 */ 80 func Fnzs(e ...string) string { 81 for _, i := range e { 82 if i != "" { 83 return i 84 } 85 } 86 return "" 87 } 88 89 /* 90 Fnzb returns the first non false bool 91 */ 92 func Fnzb(e ...bool) bool { 93 for _, i := range e { 94 if i { 95 return i 96 } 97 } 98 return false 99 }