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  }