code: func (t *TagLoader) processField(tagName string, field *structs.Field) error {
  	switch field.Kind() {
  	case reflect.Struct:
  		for _, f := range field.Fields() {
  			if err := t.processField(tagName, f); err != nil {
  				return err
  			}
  		}
  	default:
  		defaultVal := field.Tag(t.DefaultTagName)
  		if defaultVal == "" {
  			return nil
  		}
  
  		err := fieldSet(field, defaultVal)
  		if err != nil {
  			return err
  		}
  	}
  
  	return nil
  }
docs: // processField gets tagName and the field, recursively checks if the field has the given
  // tag, if yes, sets it otherwise ignores