为了账号安全,请及时绑定邮箱和手机立即绑定

在 GoLang 的 For 循环中将值转换为字符串

在 GoLang 的 For 循环中将值转换为字符串

Go
动漫人物 2021-12-20 19:05:25
在 GoLang 中,我像这样循环我的表单数据,for key, values := range r.Form {   // range over map    for _, value := range values {    // range over []string        fmt.Println(key, value)    }}我可以像这样将数据打印到终端,但我需要这个数据是一个字符串,以便我可以从 for 循环外部访问它。当循环完成时,我如何将它放在一个我可以在 for 循环之外调用的变量中?我的目标是通过加入这三个字符串来构建一个 urlvar SearchUrl = "https://api.themoviedb.org/3/search/movie?query="var MovieSearch []string = r.Form["GetSearchKey"]   var apiKey = "&api_key=e2a"UrlBuild := []string {SearchUrl, MovieSearch, apiKey}fmt.Println(UrlBuild) 我收到这个错误/main.go:71: cannot use MovieSearch (type []string) as type string in array or slice literalMovieSearch来自输入表单。它是搜索关键字。一旦我有了一个字符串,我就可以将它传递给进行 api 调用的函数。全功能func searchHandler(w http.ResponseWriter, r *http.Request) {  display(w, "search", &Page{Title: "Search"})   fmt.Println("method:", r.Method)         r.ParseForm()        fmt.Println("GetSearchKey:", r.Form["GetSearchKey"])for key, values := range r.Form {   // range over mapfor _, value := range values {    // range over []string    fmt.Println(key, value)  }}var SearchUrl = "https://api.themoviedb.org/3/search/movie?query=" var MovieSearch []string = r.Form["GetSearchKey"]   var apiKey = "&api_key=ewrfwrfwrcwerc"UrlBuild := []string {SearchUrl, MovieSearch, apiKey}fmt.Println(UrlBuild)fmt.Println(reflect.TypeOf(r.Form["GetSearchKey"] ))}错误来自这一行,UrlBuild := []string {SearchUrl, MovieSearch, apiKey}
查看完整描述

2 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

切片中不能有切片。


func ArrayToString(array []string) string {

    str := strings.Join(array, "")

    return str


}

UrlBuild := []string {SearchUrl, ArrayToString(MovieSearch), apiKey}

fmt.Println(UrlBuild) 

UrlBuildString := ArrayToString(UrlBuild)

或者


UrlBuildString := ArrayToString([]string{SearchUrl, ArrayToString(MovieSearch), apiKey}

_________________满的_______________


func ArrayToString(array []string) string {

    str := strings.Join(array, "")

    return str


}

func searchHandler(w http.ResponseWriter, r *http.Request) {

  display(w, "search", &Page{Title: "Search"})

   fmt.Println("method:", r.Method) 

        r.ParseForm()

        fmt.Println("GetSearchKey:", r.Form["GetSearchKey"])


for key, values := range r.Form {   // range over map

for _, value := range values {    // range over []string

    fmt.Println(key, value)


  }

}


var SearchUrl = "https://api.themoviedb.org/3/search/movie?query="

 var MovieSearch []string = r.Form["GetSearchKey"]   

var apiKey = "&api_key=ewrfwrfwrcwerc"

UrlBuild := []string {SearchUrl, ArrayToString(MovieSearch), apiKey}

fmt.Println(UrlBuild)

OUTPUT_STRING := ArrayToString(UrlBuild)

}


查看完整回答
反对 回复 2021-12-20
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

这个问题似乎并不那么糟糕,尽管我可能误解了这个问题。有很多方法可以构建这些字符串。


考虑使用串联(慢)的以下方法:


s := []string{}

for key, values := range r.Form {   // range over map

    for _, value := range values {    // range over []string

        s = append(s, fmt.Sprintf("%s, %s", key, value))

    }

}

data := strings.Join(s, ";")

此处可以看到更多连接示例:http : //herman.asia/efficient-string-concatenation-in-go


查看完整回答
反对 回复 2021-12-20
  • 2 回答
  • 0 关注
  • 217 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信