curl - Golang 中的函数基础

标签 curl go

我刚开始学习 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/

相关文章:

PHP 多 curl 或多线程

go - 发布一个 golang 模块 : Semantic versioning

go - 有没有办法在 VSCode 中保存时运行 go 测试,并将其输出到终端?

go - 如何使用 discordgo 获取所有 channel 的列表?

python-3.x - Python 请求 : How to get response cookie from 302 redirect

php - 使用 Microsoft Translator API 翻译超时

php - 如何使用 DOM 和 XPath 从页面中抓取链接?

go - 在 Golang 中将 int 数组转换为字节数组

windows - 在 Go 中读取 XML 文件

curl - 使用 cURL 更新 openrdf-sesame 端点中的三元组