- 推荐学习文档
以下是一个用 Go 语言实现将结构体转换为按照参数名 ASCII 字典序排序的key=value格式字符串的方法:
package main
import (
"fmt"
"reflect"
"sort"
"strings"
)
type MyStruct struct {
Field1 string
Field2 int
Field3 bool
}
func structToKeyValueSorted(s interface{}) string {
v := reflect.ValueOf(s)
t := v.Type()
if v.Kind()!= reflect.Struct {
return ""
}
parts := make([]string, 0)
for i := 0; i < v.NumField(); i++ {
fieldValue := v.Field(i).Interface()
key := t.Field(i).Name
value := fmt.Sprintf("%v", fieldValue)
parts = append(parts, fmt.Sprintf("%s=%s", key, value))
}
sort.Strings(parts)
return strings.Join(parts, "&")
}
你可以使用以下方式调用这个函数:
func main() {
s := MyStruct{Field1: "value1", Field2: 123, Field3: true}
result := structToKeyValueSorted(s)
fmt.Println(result)
}
这个函数首先检查输入是否为结构体,如果是,则遍历结构体的字段,将字段名和字段值转换为key=value的形式,并存储在一个切片中。然后,对这个切片进行排序,最后将排序后的切片元素用&连接起来,形成最终的字符串。
希望本文对你有所帮助!如果你有任何问题或建议,欢迎在评论区留言。
关注我看更多有意思的文章哦!👉👉