Go语言中设置URL查询参数时整数转字符串错误问题求助
解决Go语言中整数转字符串导致URL参数异常的问题
嗨,这个问题我一眼就看明白啦——你用string(page)把整数转字符串的方式完全错了!
问题根源
在Go语言里,string(int)的作用是把整数当作Unicode码点转换成对应的字符,而不是把数字转换成它的字符串形式。比如你传入的page=1,对应的Unicode字符是不可见的SOH(起始头)字符,这个字符在URL编码后就变成了%01,这就是你看到异常的原因。
正确的解决办法
Go标准库的strconv包提供了专门的整数转字符串的方法,用strconv.Itoa(page)就能完美解决这个问题:
修改后的代码如下:
import ( "net/url" "strconv" // 记得导入这个包 ) func createLink(title string, page int) string { url := url.URL{ Scheme: "https", Host: "jsonmock.hackerrank.com", Path: "/api/movies/search/", } query := url.Query() query.Set("page", strconv.Itoa(page)) // 这里替换成正确的转换方法 query.Set("title", title) url.RawQuery = query.Encode() return url.String() }
另外,如果你不想导入strconv,也可以用fmt.Sprintf("%d", page)来实现同样的效果,不过strconv.Itoa在性能上会更优一些。
验证效果
修改后再运行代码,生成的URL就会变成你期望的样子:https://jsonmock.hackerrank.com/api/movies/search/?page=1&title=spiderman,完美解决问题!
内容的提问来源于stack exchange,提问作者Farhandika
相关产品推荐
相关产品推荐

