gitee.com/sy_183/go-common@v1.0.5-0.20231205030221-958cfe129b47/def/any.go (about)

     1  package def
     2  
     3  import "reflect"
     4  
     5  func SetAny[O any](o O, def O) O {
     6  	if reflect.ValueOf(o).IsNil() {
     7  		return def
     8  	}
     9  	return o
    10  }
    11  
    12  func SetterAny[O any](o O, setter func() O) O {
    13  	if reflect.ValueOf(o).IsNil() {
    14  		return setter()
    15  	}
    16  	return o
    17  }
    18  
    19  func SetAnyP[O any](op *O, def O) {
    20  	if reflect.ValueOf(*op).IsNil() {
    21  		*op = def
    22  	}
    23  }
    24  
    25  func SetterAnyP[O any](op *O, setter func() O) {
    26  	if reflect.ValueOf(*op).IsNil() {
    27  		*op = setter()
    28  	}
    29  }