首页 > 解决方案 > 如何在http get中将多个字符串传递给一个url?

问题描述

这是我当前的代码:

var dek string = "dk"
resp,err := c.Get("https://google."VALUEHERE"")

如果我需要一堆不同的字符串,我希望能够将不同的字符串传递到我的 url 中。

所以理想情况下是这样的:

resp,err := c.Get("https://google.dk/value1=%v&value2=%v", value1, value2)

这有可能吗?

标签: httpgo

解决方案


用于fmt.Sprintf(...)构建不需要编码的字符串:

hostname := fmt.Sprintf("google.%s", "dk")
// => "google.dk"

使用该net/url构建 URL,以便它们被正确编码:

u := &url.URL{Scheme: "https", Host: hostname}
fmt.Println(u)
// => https://google.dk

q := u.Query()
q.Add("value1", "foo")
q.Add("value2", "Hello, World!")
u.RawQuery = q.Encode()
fmt.Println(u)
// => https://google.dk?value1=foo&value2=Hello%2C+World%21

resp, err := c.Get(u.String())
// ...

推荐阅读