我有Go函数,我想取消引用存储在指针中的第一个值。
例如:
func foo() (int64, error) {...}
var A *int64
var err error
A, err = &foo()
这是可能的,还是我必须复制(在我的情况下非常大)返回值?
答案 0 :(得分:4)
你不能这样做。地址运算符&
无法应用于函数调用。
对于
x
类型的操作数T
,地址操作&x
生成*T
到x
类型的指针。操作数必须是可寻址,即变量,指针间接或切片索引操作;或可寻址结构操作数的字段选择器;或者可寻址数组的数组索引操作。作为可寻址性要求的例外,x
也可能是(可能带括号的)composite literal。如果对x
的评估会导致run-time panic,那么对&x
的评估也会如此。
你应该做的是改变你的功能,以便首先返回一个指针,如果它确实重要的话。