【问题标题】:Function basics in GolangGolang 中的函数基础
【发布时间】:2017-01-08 10:44:41
【问题描述】:

我刚开始学习 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 并检查它,但这似乎太老套了。最好的方法是什么?

我想让调用函数的代码行尽可能简短,并且函数本身简洁明了。所有的尝试都变得有点太大了,有很多控制语句。

【问题讨论】:

    标签: curl go


    【解决方案1】:

    一般来说,在 Go 中有"Zero values" 的概念,所以如果 data 是空字符串或相反的逻辑,您最可能想要做的是将 body 设置为 nil

    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。

    【讨论】:

    • 谢谢,哈尔。这正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 2018-01-27
    • 1970-01-01
    相关资源
    最近更新 更多