php 与 python 代码在 go 语言中的转换
对于 php 中字典排序并序列化生成签名的代码,在 go 语言中可通过如下方式实现:
package main import ( "crypto/md5" "encoding/hex" "fmt" "net/url" "sort" ) func main() { params := map[string]string{ "x": "有中文有符!@ 2号空格http://aaa.com", "y": "1", "a": "{"a1":222,"a2":"\u4e2d\u6587"}", } keys := make([]string, 0, len(params)) for k := range params { keys = append(keys, k) } sort.Strings(keys) data := url.Values{} for _, k := range keys { data.Add(k, params[k]) } encodedParams := data.Encode() signKey := "abc" signData := encodedParams + signKey hash := md5.New() hash.Write([]byte(signData)) bytes := hash.Sum(nil) sign := hex.EncodeToString(bytes) fmt.Println(sign) // 18cebcb0d00d0c48904fd4b06ed0319d }
登录后复制
对于 php 中的 ksort 函数,go 语言中可以使用内置的 sort 函数进行排序。
对于 python 中的 http_build_query 函数,go 语言中可以使用 net/url 包中的 values 类型进行 url 编码。
立即学习“PHP免费学习笔记(深入)”;
需要注意的是,php 中字符串 uxxxx 表示普通字符串,而在 go、python 和 js 等语言中会被识别为 unicode 转义字符。因此,需要对字符串进行转义。
以上就是如何将 PHP 和 Python 代码中的字典排序与签名生成逻辑移植到 Go 语言?的详细内容,更多请关注抖狐科技其它相关文章!
-
小米手机通知亮屏在哪设置
在快节奏的日常生活中,手机通知已成为获取信息和保持联系的关键途径,其中小米手机因其强大的功能和个性化设置而备受青睐。为了提升用户体验,小米手机提供了通知亮屏功能,让用户在收到新消息或通知时无需解锁即可...
-
冰与火之舞怎么解锁emomomo 冰与火之舞emomomo怎么解锁
随着各种节奏游戏的兴起,一款名为《冰与火之舞》的独特游戏吸引了玩家的关注。这款看似简单的游戏以其优雅的运动和要求玩家凭借听觉而非视觉进行操作的机制脱颖而出。《冰与火之舞》是一款节奏游戏,玩家可以通过按...
-
java怎么给三维数组赋值
在 java 中给三维数组赋值需要以下步骤:声明和初始化数组。使用 for 循环给每个元素赋值。使用增强 for 循环给每个元素赋值。使用数组初始化语法赋值。如何在 Java 中给三维数组赋值 三维数...
-
国产抗日题材FPS《抵抗者》引起国外玩家关注
9月15日,杭州浩汤科技公司公布了抗日题材FPS游戏《抵抗者》实机预告,游戏采用虚幻5引擎开发,计划于2025年发售,登陆平台暂未公布。预告片:官方表示:“游戏是以1940年代的中国为背景的第一人称射...
-
VSCode 中 Python 循环输出为何延迟,如何实现逐一输出?
vscode 中 python 循环结束才显示终端输出的解决办法 在 vscode 中运行 python 程序时,发现循环过程中的 print 输出不会立即显示在终端,而是等待整个循环结束才一次性输出...