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

Jus*_*nHK 2 pointers go dereference

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

例如:

func foo() (int64, error) {...}
var A *int64
var err error
A, err = &foo()
Run Code Online (Sandbox Code Playgroud)

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

icz*_*cza 6

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

规格:地址运算符:

x对于类型为 的操作数T,地址运算会生成一个类型为&x的指针。操作数必须是可寻址的,即变量、指针间接寻址或切片索引操作;或可寻址结构操作数的字段选择器;或可寻址数组的数组索引操作。作为可寻址性要求的例外,也可以是(可能带括号的)复合文字。如果 的求值会导致运行时恐慌,那么 的求值也会导致运行时恐慌。*Txxx&x

如果确实重要的话,您应该做的是首先更改函数以返回指针。