确定go函数返回的内容

时间:2017-06-30 13:49:58

标签: go

鉴于此功能:

func (c *Firehose) PutRecord(input *PutRecordInput) (*PutRecordOutput, error) {
    req, out := c.PutRecordRequest(input)
    return out, req.Send()
}

我发现这个调用有效:

err, _ := svc.PutRecord(putRecordInput)

但是我仍然不清楚这在函数签名中意味着什么:

(*PutRecordOutput, error)

我的问题是,我是否可以通过返回行中指定的内容始终确定函数返回的内容,在本例中为:

return out, req.Send()

1 个答案:

答案 0 :(得分:2)

函数签名的这一部分正是函数返回的内容。

(*PutRecordOutput, error)

因此,这个将返回一个指向PutRecordOutputerror的指针(如果没有错误,按惯例返回为nil。)

如果查看函数的源代码,return语句必须与之一致,这样才能帮助您了解返回值的构建方式。

但请注意,在某些情况下,您可以命名输出参数,例如:

(output *PutRecordOutput, err error)

在这种情况下,outputerr将是函数内部的有效局部变量,您可能会看到如下的普通return语句:

return

请记住,人们会隐瞒地这样做:

return output, err