取消引用go中的第一个返回值

时间:2016-05-02 14:03:20

标签: pointers go dereference

我有Go函数,我想取消引用存储在指针中的第一个值。

例如:

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

这是可能的,还是我必须复制(在我的情况下非常大)返回值?

1 个答案:

答案 0 :(得分:4)

你不能这样做。地址运算符&无法应用于函数调用。

Spec: Address operators:

  

对于x类型的操作数T,地址操作&x生成*Tx类型的指针。操作数必须是可寻址,即变量,指针间接或切片索引操作;或可寻址结构操作数的字段选择器;或者可寻址数组的数组索引操作。作为可寻址性要求的例外,x也可能是(可能带括号的)composite literal。如果对x的评估会导致run-time panic,那么对&x的评估也会如此。

你应该做的是改变你的功能,以便首先返回一个指针,如果它确实重要的话。