code: func (n *node) UpdateField(data interface{}, fieldName string, value interface{}) error {
  	return n.update(data, func(ref *reflect.Value, current *reflect.Value, cfg *structConfig) error {
  		f := current.FieldByName(fieldName)
  		if !f.IsValid() {
  			return ErrNotFound
  		}
  		tf, _ := current.Type().FieldByName(fieldName)
  		if tf.PkgPath != "" {
  			return ErrNotFound
  		}
  		v := reflect.ValueOf(value)
  		if v.Kind() != f.Kind() {
  			return ErrIncompatibleValue
  		}
  		f.Set(v)
  		idxInfo, ok := cfg.Fields[fieldName]
  		if ok {
  			idxInfo.Value = &f
  			idxInfo.IsZero = isZero(idxInfo.Value)
  			idxInfo.ForceUpdate = true
  		}
  		return nil
  	})
  }
docs: // UpdateField updates a single field