code: func Convert(obj interface{}) (url.Values, error) {
  	result := url.Values{}
  	if obj == nil {
  		return result, nil
  	}
  	var sv reflect.Value
  	switch reflect.TypeOf(obj).Kind() {
  	case reflect.Ptr, reflect.Interface:
  		sv = reflect.ValueOf(obj).Elem()
  	default:
  		return nil, fmt.Errorf("expecting a pointer or interface")
  	}
  	st := sv.Type()
  	if !isStructKind(st.Kind()) {
  		return nil, fmt.Errorf("expecting a pointer to a struct")
  	}
  
  	// Check all object fields
  	convertStruct(result, st, sv)
  
  	return result, nil
  }
docs: // Convert takes an object and converts it to a url.Values object using JSON tags as
  // parameter names. Only top-level simple values, arrays, and slices are serialized.
  // Embedded structs, maps, etc. will not be serialized.