猿问

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

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


例如:


func foo() (int64, error) {...}

var A *int64

var err error

A, err = &foo()

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


慕丝7291255
浏览 201回答 1
1回答

MYYA

你不能那样做。地址运算符&不能应用于函数调用。规范:地址运算符:一个操作数x类型的T,写入动作&x产生类型的指针*T到x。操作数必须是可寻址的,即变量、指针间接或切片索引操作;或可寻址结构操作数的字段选择器;或可寻址数组的数组索引操作。作为可寻址性要求的一个例外,它x也可以是(可能带括号的)复合文字。如果评估x会导致运行时恐慌,那么评估也会导致&x。你应该做的是首先改变你的函数以返回一个指针,如果它确实重要的话。
随时随地看视频慕课网APP

相关分类

Go
我要回答