You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mongox-go-driver/mongox/base/reset.go

30 lines
447 B

package base
import (
"reflect"
)
// Reset function creates new zero object for the target pointer
func Reset(target interface{}) {
type resetter interface {
Reset()
}
resettable, canReset := target.(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)
}