code: func ListExportedFields(val interface{}, predicates ...ExportedPredicate) []*reflect.StructField {
  	valType := reflect.Indirect(reflect.ValueOf(val)).Type()
  	len := valType.NumField()
  	ret := []*reflect.StructField{}
  	for i := 0; i < len; i++ {
  		structField := valType.Field(i)
  
  		if FieldExported(&structField, predicates...) {
  			ret = append(ret, &structField)
  		}
  	}
  
  	return ret
  }
docs: // ListExportedFields returns all fields of a structure that starts wit uppercase letter