我刚开始学习 Go,我认为创建一个简单的 Curl 类型函数来处理不同类型的请求会很有趣。但是,我不确定最好的方法应该是什么,而且我在 Google 搜索方面运气不佳。
对于类似 curl 的请求,可能有也可能没有数据负载,我不确定如何最好地处理这种情况。理想情况下,在函数声明中(在下面的示例中)我希望 data
默认为 nil
并且 if 子句检查是否准备 body
变量。
connect("POST", `{"name":"bob","age":123}`)
func connect(method string, data string) {
body := strings.NewReader(data)
req, err := http.NewRequest(method, "http://domain.com", body)
}
当调用该函数时,我可以将数据设置为字符串 false
并检查它,但这似乎太老套了。最好的方法是什么?
我希望保持调用函数的代码行尽可能简短,并使函数本身保持简洁和简约。由于有许多控制语句,所有尝试都变得有点太大了。
最佳答案
一般来说,在 Go 中有 "Zero values" 的概念。 , 所以你最有可能想要做的是将 body 设置为 nil
如果 data 是一个空字符串,或者相反的逻辑:
var body io.Reader // Zero value of interfaces is always nil
if data != "" {
body = strings.NewReader(data)
}
req, err := http.NewRequest(method, "http://domain.com", body)
如果您需要一个选项来将请求的主体设置为空字符串,那么只需使用 *string
并检查它是否为 nil。
关于curl - Golang 中的函数基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41531831/