使用字符串函数将 url.Query().Set 中的整数转换为字符串

这是我使用 goLang 的第一天,我目前正在尝试使用数据,但遇到错误,正在将整数转换为字符串


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", string(page))

    query.Set("title", title)

    url.RawQuery = query.Encode()

    return url.String()

}

您可以尝试该代码,结果是实际结果:


https://jsonmock.hackerrank.com/api/movies/search/?page=%01&title=spiderman

预期结果 :


https://jsonmock.hackerrank.com/api/movies/search/?page=1&title=spiderman

有 %01 ,这是我不想要的。我相信我在将整数转换为字符串时犯了一个错误


忽然笑
浏览 191回答 1
1回答

一只名叫tom的猫

您应该使用strconv.Itoa()方法将整数格式化为字符串。这在链接的答案中得到了更好的解释。为了完整起见,以下是您最终%01的结果:首先, int1通过遵循以下转换规则将“普通转换”为字符串:将有符号或无符号整数值转换为字符串类型会生成一个包含整数的 UTF-8 表示形式的字符串。超出有效 Unicode 代码点范围的值将转换为“\uFFFD”。然后生成的字符串(unicode 代码点的字符等于 1)得到URL-encoded,最终%01作为它的表示。作为旁注,如果您对代码运行go vet ,则会收到有关此警告:hello.go:19:20:从 int 到 string 的转换产生一串一个符文,而不是一串数字(你的意思是 fmt.Sprint(x) 吗?)虽然这并不总是为您提供有关如何修复错误的绝对最佳建议,但它至少将您推向了正确的方向。强烈建议从学习语言的第一天开始就习惯运行这种(或类似的)检查的想法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go