Skip to content

Instantly share code, notes, and snippets.

@xmapst
Last active February 22, 2023 00:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xmapst/d6a3ebcf83b726d10a64d7e09d7565e5 to your computer and use it in GitHub Desktop.
Save xmapst/d6a3ebcf83b726d10a64d7e09d7565e5 to your computer and use it in GitHub Desktop.
SortQuery
package query
func SortQuery(objPtr interface{}) (res []string, err error) {
reflectObjType := reflect.TypeOf(objPtr)
if reflectObjType.Kind() != reflect.Ptr {
return nil, errors.New("objPtr can only be pointers")
}
if reflectObjType.Elem().Kind() != reflect.Struct {
return nil, errors.New("objPtr can only be struct")
}
reflectObjValue := reflect.ValueOf(objPtr).Elem()
var vMap = map[string]interface{}{}
var tagList []string
for i := 0; i < reflectObjValue.NumField(); i++ {
tagList = append(tagList, reflectObjValue.Type().Field(i).Name)
vMap[reflectObjValue.Type().Field(i).Name] = reflectObjValue.Field(i).Interface()
}
sort.Strings(tagList)
for _, k := range tagList {
res = append(res, fmt.Sprintf("%s=%v", k, vMap[k]))
}
return
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment