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

在 GoLang 中,我像这样循环我的表单数据,


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

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

        fmt.Println(key, value)

    }

}

我可以像这样将数据打印到终端,但我需要这个数据是一个字符串,以便我可以从 for 循环外部访问它。


当循环完成时,我如何将它放在一个我可以在 for 循环之外调用的变量中?


我的目标是通过加入这三个字符串来构建一个 url


var 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 literal

MovieSearch来自输入表单。它是搜索关键字。


一旦我有了一个字符串,我就可以将它传递给进行 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 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, MovieSearch, apiKey}

fmt.Println(UrlBuild)


fmt.Println(reflect.TypeOf(r.Form["GetSearchKey"] ))

}

错误来自这一行,


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


动漫人物
浏览 218回答 2
2回答

HUWWW

切片中不能有切片。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 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, ArrayToString(MovieSearch), apiKey}fmt.Println(UrlBuild)OUTPUT_STRING := ArrayToString(UrlBuild)}

慕尼黑5688855

这个问题似乎并不那么糟糕,尽管我可能误解了这个问题。有很多方法可以构建这些字符串。考虑使用串联(慢)的以下方法: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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go