parent
57fb40693a
commit
dad0a0598b
@ -0,0 +1,27 @@ |
|||||||
|
package base |
||||||
|
|
||||||
|
import ( |
||||||
|
"reflect" |
||||||
|
|
||||||
|
"github.com/mainnika/mongox-go-driver/mongox" |
||||||
|
) |
||||||
|
|
||||||
|
// Reset function creates new zero object for the target pointer
|
||||||
|
func Reset(target interface{}) { |
||||||
|
|
||||||
|
resettable, canReset := target.(mongox.Resetter) |
||||||
|
if canReset { |
||||||
|
resettable.Reset() |
||||||
|
return |
||||||
|
} |
||||||
|
|
||||||
|
v := reflect.ValueOf(target) |
||||||
|
if v.Kind() != reflect.Ptr { |
||||||
|
panic("reset target should be a pointer") |
||||||
|
} |
||||||
|
|
||||||
|
t := v.Elem().Type() |
||||||
|
zero := reflect.Zero(t) |
||||||
|
|
||||||
|
v.Elem().Set(zero) |
||||||
|
} |
Loading…
Reference in new issue