2016-05-02 7 views
0

私はGo関数を持っています。ポインタに格納する最初の値を逆参照したいと思います。go最初の戻り値を参照解除する

例えば:

func foo() (int64, error) {...} 
var A *int64 
var err error 
A, err = &foo() 

が、このことは可能ですか、私は(私の場合は非常に大きな)戻り値をコピーする必要がありますか?

+1

[関数呼び出しからの戻り値のポインタを取得する方法](http://stackoverflow.com/questions/30744965/how-to-get-the-pointer-of-return-value-from -function-call)関連:[Goの操作結果への参照を保存するにはどうすればいいですか?(http://stackoverflow.com/questions/34197248/how-can-i-store-reference-to-the- – icza

+0

私は単価値関数呼び出しのためにそれを行うことができると仮定していたので、私はそれを見ていませんでした。私は最終的にこれが疑問であることを意味すると思います。 – JustinHK

答えて

4

これはできません。アドレス演算子&は、関数呼び出しには適用できません。タイプTのオペランドxについて

Spec: Address operators:

、書込み動作&xxにタイプ*Tのポインタを生成します。オペランドは、のアドレス指定可能なでなければなりません。つまり、変数、ポインタ間接、またはスライスのインデックス処理です。またはアドレス指定可能なstructオペランドのフィールドセレクタ。またはアドレス指定可能な配列の配列インデクシング操作である。アドレス指定可能性要件の例外として、xは(おそらくかっこにされた)composite literalでもかまいません。 xの評価でrun-time panicが発生すると、&xの評価も行われます。

重要なことは、最初にポインタを戻すように関数を変更することです。

関連する問題