【问题标题】:Dereferencing the first return value in go取消引用 go 中的第一个返回值
【发布时间】:2016-08-27 07:58:45
【问题描述】:

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

例如:

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

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

【问题讨论】:

标签: pointers go dereference


【解决方案1】:

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

Spec: Address operators:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 2021-11-18
    • 2016-12-08
    • 2011-12-06
    • 2012-10-04
    • 2023-01-17
    • 1970-01-01
    相关资源
    最近更新 更多