2016-05-02 42 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函數調用)還有相關的:[如何在Go中存儲對操作結果的引用](http://stackoverflow.com/questions/34197248/how-can-i-store-reference-to-the-操作結果) – icza

+0

我曾假設我可以做一個單值函數調用,所以我甚至沒有看到;我想最終這意味着這個問題是沒有意義的。 – JustinHK

回答

4

你不能那樣做。地址運算符&不能應用於函數調用。

Spec: Address operators:

對於T類型的操作數x,寫入動作&x產生*T類型的到x的指針。操作數必須是可尋址的,即變量,指針間接或片段索引操作;或可尋址結構操作數的字段選擇器;或可尋址陣列的數組索引操作。作爲尋址能力要求的例外,x也可以是(可能括號的)composite literal。如果x的評估會導致run-time panic,那麼評估&x也會。

你應該做的是改變你的函數返回一個指針,如果它確實重要。

相關問題