【问题标题】:Cannot take the address of the result of append [duplicate]无法获取附加结果的地址[重复]
【发布时间】:2020-11-18 09:14:40
【问题描述】:

我在尝试时收到此错误“无法获取附加结果的地址”:

s := []int{1, 2}
temp := &s
temp = &append(*temp, 3)

但是如果我像这样进行细微的更改:

s := []int{1, 2}
temp := &s
temp2 := append(*temp, 3)
temp = &temp2

没有错误。

我被导航到这个issue,但我无法理解它是 cmets。

谁能解释一下区别?

【问题讨论】:

  • 你说“我收到了这个错误”,但你从来没有提到过错误。
  • 如果能看懂链接问题中的cmets,有什么问题?

标签: go


【解决方案1】:

在第二个示例中,您引用了 append 函数的副本,这就是为什么您没有收到编译器错误但它也不应该出现的原因。在第一个示例中,您尝试直接获取对 append 函数的引用,这就是您得到编译器错误的原因

【讨论】:

  • 谢谢哥们,如果没有像第二个例子这样的中间变量的帮助,我怎样才能直接取消引用返回值
  • 我认为你不需要 append 函数的引用,只需要它返回的值,但那是你应该在 g 文档中查找的内容
  • 在第二个示例中,您引用了 append 函数的副本 不,他正在使用 temp2 的地址,这是完全有效的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-01
  • 2014-07-25
  • 1970-01-01
  • 2013-12-04
  • 2019-02-17
  • 2023-03-21
  • 1970-01-01
相关资源
最近更新 更多