【问题标题】:Converting Integer to String in url.Query().Set using String function [duplicate]使用字符串函数将 url.Query().Set 中的整数转换为字符串 [重复]
【发布时间】:2022-01-30 23:32:00
【问题描述】:

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

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 ,这是我不想要的。我相信我在将整数转换为字符串时犯了一个错误

【问题讨论】:

    标签: go


    【解决方案1】:

    您应该使用strconv.Itoa() 方法将整数格式化为字符串。这在linked answer 中有更好的解释。为了完整起见,以下是您最终在结果中使用%01 的方式:

    • 首先,int 1 通过遵循 conversion rule 得到“普通转换”为字符串:

    将有符号或无符号整数值转换为字符串类型会产生 包含整数的 UTF-8 表示形式的字符串。价值观 超出有效 Unicode 代码点范围的转换为 "\uFFFD"。

    • 然后生成的字符串(字符的 unicode 代码点等于 1)得到URL-encoded,最终以%01 作为其表示。

    作为旁注,如果您在代码上运行 go vet,则会收到警告:

    hello.go:19:20:从 int 到 string 的转换产生一串一 符文,不是一串数字(你是说 fmt.Sprint(x) 吗?)

    虽然这并不总是为您提供关于如何解决错误的绝对最佳建议,但它至少将您推向了正确的方向。强烈建议从学习语言的第一天开始就习惯于运行这种(或类似的)检查。

    【讨论】:

      猜你喜欢
      • 2013-10-06
      • 2010-11-21
      • 2013-01-24
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      相关资源
      最近更新 更多