gpt4 book ai didi

variables - 根据 switch 语句更改变量类型

转载 作者:数据小太阳 更新时间:2023-10-29 03:21:29 26 4
gpt4 key购买 nike

我正在 Go 中创建一个 POST HTTP 请求函数,该函数将通过参数接受不同的数据类型,但是在将值从 switch 语句分配给 requestData 变量时我遇到了困难。

理想情况下,在我们转到 switch 语句然后为其分配值和类型之前,requestData 应该是 nil 类型。任何帮助表示赞赏:)

关于请求数据的错误消息:“语法错误:意外类型,预期类型”

我的代码:

main() {
..

// CASE 1: we are passing the form of url.Values type
form := url.Values{}
form.Add("note", "john2424")
form.Add("http", "clear")

response := POST("www.google.co.uk", client, form) // first POST request



// CASE 2: we are passing the JSON data using []byte type
jsonData := []byte(`{"ids":[12345]}`)
response := POST("www.google.co.uk", client, jsonData) // second POST request
}

func POST(website string, client *http.Client, data interface{}) (bodyString string) {
var requestData type // <<<<<<< Change requestData to a variable from switch case

switch data.(type) { // switch case based on type
case url.Values: // URL form data
formattedData := data.(url.Values) // convert interface to url.Values
requestData := strings.NewReader(formattedData.Encode()) // *Reader type
case []byte: // JSON
formattedData := data.([]byte) // convert interface to []byte
requestData := bytes.NewBuffer(formattedData) // *Buffer type
default: // anything else

}

request, err := http.NewRequest("POST", website, requestData)
if err != nil {
log.Fatal(err)
}


response, err := client.Do(request)
if err != nil {
log.Fatal(err)
}

defer response.Body.Close()
body, err := ioutil.ReadAll(response.Body)
if err != nil {
log.Fatal(err)
} else {
bodyString = string(body)
}

return
}

最佳答案

获取输入的数据到开关中

typedData:=switch data.(type) {

然后使用它来进行转换

case []byte: // JSON
requestData := bytes.NewBuffer(typedData) // *Buffer type

尽管@mkopriva 的 Playground 示例看起来是个更好的主意

关于variables - 根据 switch 语句更改变量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53032820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com