2017-06-30 11 views
-5

から返されるかを決定:は、この機能を考えると、外出先機能

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

私はこの呼び出しが動作することがわかった:私はまだ、この関数の中で何を意味するのかについて非常に明確ではないよしかし

err, _ := svc.PutRecord(putRecordInput) 

署名:

私の質問は、何が仕様であるかによって関数から返されるものをいつでも決定できますかこの場合、あるリターンラインにified:

return out, req.Send()

+1

'err、_:= svc.PutRecord(putRecordInput)' - > 'err'は誰もが期待しているものを指していません –

答えて

2

関数シグネチャのこの部分はまさに関数戻ります。

(*PutRecordOutput, error) 

だから、この1はPutRecordOutputプラス(エラーが発生しなかった場合に慣例によりnilとして返される)errorへのポインタを返します。

関数のソースコードを見ると、returnステートメントはそれと一貫している必要があります。そのため、戻り値の作成方法を理解するのにも役立ちます。

しかし、のように、いくつかのケースでは、あなたが出力引数を命名している可能性がありますのでご注意ください。その場合は

(output *PutRecordOutput, err error) 

outputerrは、関数内で有効なローカル変数となり、そしてあなたは、プレーンが表示される場合がありますこのようなreturn文:

return 

ちょうど1が暗黙のうちにやっようになることに注意してください0

関連する問題