GO中url.Values作为参数传递的两种解析方法


方法一:
~~~
func MakeParams(params url.Values, appKey string) (params_str, sign_str string) {
    var s, p string
    var keys []string
    b := bytes.Buffer{}
    b.WriteString(appKey)
    for k, _ := range params {
        if k != "sign" {
            keys = append(keys, k)
        }
    }
    sort.Strings(keys)
    for _, v := range keys {
        b.WriteString(v)
        b.WriteString(params.Get(v))
    }
    p = b.String()
    b.WriteString(appKey)
    s = b.String()
    p = strings.TrimRight(p, "&")
    return p, s
}
~~~


方法二:
~~~
func MakeParams(params map[string][]string, appKey string) (params_str, sign_str string) {
    var s, p string
    var keys []string
    b := bytes.Buffer{}
    b.WriteString(appKey)
    for k, _ := range params {
        if k != "sign" {
            keys = append(keys, k)
        }
    }
    sort.Strings(keys)
    for _, v := range keys {
        b.WriteString(v)
        b.WriteString(params[v][0])
    }
    p = b.String()
    b.WriteString(appKey)
    s = b.String()
    p = strings.TrimRight(p, "&")
    return p, s
}
~~~



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
将结构体转换为url.Values方法有很多种,但我将介绍其一种简单且常用的方法。 首先,我们需要导入"net/url"包,该包url.Values的相关方法。 假设我们有一个名为person的结构体,其包含姓名(name)和年龄(age)两个字段: ``` type person struct { Name string Age int } ``` 现在我们要将一个person对象转换为url.Values,可以按照以下步骤进行操作: 1. 首先,创建一个类型为url.Values的变量,用于存储转换后的结果: ``` values := url.Values{} ``` 2. 接下来,将结构体字段的值逐个添加到values,可以使用url.Values的Add方法: ``` p := person{Name: "张三", Age: 25} values.Add("name", p.Name) values.Add("age", strconv.Itoa(p.Age)) ``` 其,strconv.Itoa()函数用于将整数类型的Age字段转换为字符串类型。 3. 最后,我们可以通过调用values.Encode()方法,将url.Values类型转换为URL编码的字符串: ``` encodedStr := values.Encode() ``` 至此,我们就成功将结构体person转换为URL编码的字符串。 需要注意的是,结构体字段的名称和URL参数的名称需要保持一致,否则转换结果将不正确。另外,如果结构体还有嵌套的字段,我们可以使用类似的方法将嵌套字段转换为url.Values再进行拼接。 这样,我们就完成了将结构体转换为url.Values的过程。这种方法简单易懂、常用且效果良好,适合大多数场景的使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值