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.
		
		
		
		
		
			
		
			
				
					
					
						
							40 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							40 lines
						
					
					
						
							1.0 KiB
						
					
					
				
								package util
							 | 
						|
								
							 | 
						|
								import "reflect"
							 | 
						|
								
							 | 
						|
								// IsNotEmpty returns true if the given value is not zero or empty.
							 | 
						|
								func IsNotEmpty(given interface{}) bool {
							 | 
						|
									return !IsEmpty(given)
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								// IsEmpty returns true if the given value has the zero value for its type.
							 | 
						|
								func IsEmpty(given interface{}) bool {
							 | 
						|
									g := reflect.ValueOf(given)
							 | 
						|
									if !g.IsValid() {
							 | 
						|
										return true
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									if g.Kind() == reflect.Ptr {
							 | 
						|
										g = g.Elem()
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									// Basically adapted from text/template.isTrue
							 | 
						|
									switch g.Kind() {
							 | 
						|
									case reflect.Array, reflect.Slice, reflect.Map, reflect.String:
							 | 
						|
										return g.Len() == 0
							 | 
						|
									case reflect.Bool:
							 | 
						|
										return !g.Bool()
							 | 
						|
									case reflect.Complex64, reflect.Complex128:
							 | 
						|
										return g.Complex() == 0
							 | 
						|
									case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
							 | 
						|
										return g.Int() == 0
							 | 
						|
									case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
							 | 
						|
										return g.Uint() == 0
							 | 
						|
									case reflect.Float32, reflect.Float64:
							 | 
						|
										return g.Float() == 0
							 | 
						|
									case reflect.Struct:
							 | 
						|
										return g.IsZero()
							 | 
						|
									default:
							 | 
						|
										return g.IsNil()
							 | 
						|
									}
							 | 
						|
								}
							 |