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