walk: refacto
This commit is contained in:
		
							
								
								
									
										18
									
								
								walk/walk.go
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								walk/walk.go
									
									
									
									
									
								
							@ -7,22 +7,18 @@ import (
 | 
				
			|||||||
func Walk(x interface{}, fn func(string)) {
 | 
					func Walk(x interface{}, fn func(string)) {
 | 
				
			||||||
	val := getValue(x)
 | 
						val := getValue(x)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch val.Kind() {
 | 
				
			||||||
 | 
						case reflect.Struct:
 | 
				
			||||||
		for i := 0; i < val.NumField(); i++ {
 | 
							for i := 0; i < val.NumField(); i++ {
 | 
				
			||||||
		field := val.Field(i)
 | 
								// XXX: Interface() to get interface
 | 
				
			||||||
 | 
								Walk(val.Field(i).Interface(), fn)
 | 
				
			||||||
		if val.Kind() == reflect.Slice {
 | 
							}
 | 
				
			||||||
 | 
						case reflect.Slice:
 | 
				
			||||||
		for i := 0; i < val.Len(); i++ {
 | 
							for i := 0; i < val.Len(); i++ {
 | 
				
			||||||
			Walk(val.Index(i).Interface(), fn)
 | 
								Walk(val.Index(i).Interface(), fn)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		switch field.Kind() {
 | 
					 | 
				
			||||||
	case reflect.String:
 | 
						case reflect.String:
 | 
				
			||||||
			fn(field.String())
 | 
							fn(val.String())
 | 
				
			||||||
		case reflect.Struct:
 | 
					 | 
				
			||||||
			// XXX: Interface() to get interface
 | 
					 | 
				
			||||||
			Walk(field.Interface(), fn)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user