This question already has answers here:
How to get the pointer of return value from function call?

(3个答案)


3年前关闭。




我不明白为什么下面的代码片段没有编译。编译器指出:

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 ""
}

最佳答案

您不能将&应用于这样的值(除非它是复合文字)。从规范:

关于function - 为什么我无法将地址运算符(&)应用于函数直接返回值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43282057/

10-12 15:33