【发布时间】:2017-04-07 15:35:53
【问题描述】:
我不明白为什么下面的代码 sn-p 没有编译。编译器声明:
cannot take the address of getAString()
代码:
func getAStringPointer() *string {
return &getAString()
}
func getAString() string {
return ""
}
但是,将函数的结果存储在辅助变量中并返回该变量的地址,编译器的行为就可以了。
func getAStringPointer() *string {
var aString = getAString()
return &aString
}
func getAString() string {
return ""
}
【问题讨论】:
-
试试
&(getAString())。 -
对此发表评论。操作顺序意味着
&在函数调用()之前应用。你得到的错误是你试图获取函数的地址。 -
@KerrekSB 这也不起作用(你可以尝试过)。在 Go 中,您根本无法获取调用返回值的地址。
-
@icza in the stackoverflow.com/questions/30744965/… 答案很长,并没有像 RayfanWindspear 那样谈论运算符优先级。
-
@RayfenWindspear 如果你说的是真的,那就是原因,这首先是我的问题......我不想归档任何东西,我只是质疑为什么我不能做那个任务。请 izca 重新阅读我的问题以及您标记为重复的问题。