【问题标题】:Passing a parameter as an interface [duplicate]将参数作为接口传递[重复]
【发布时间】:2020-12-20 01:11:51
【问题描述】:

在 Go 中,当您将参数传递给采用接口的函数时,究竟会发生什么?具体是引用传递还是值传递?

【问题讨论】:

  • go 中的一切都是按值传递的,包括指针。 Go 中没有“按引用传递”。

标签: go interface pass-by-reference


【解决方案1】:

如果您将接口值传递给采用接口的函数,则它会被传递而无需任何进一步处理。

如果您将值传递给采用接口的函数,编译器会创建该值的副本,然后创建一个包含指向该副本的指针和值的类型的接口,并传递它。

如果将指针传递给接受接口的函数,编译器会创建一个包含该指针和类型的接口作为指向值的指针并传递它。

【讨论】:

  • 那么传递的版本是在运行时确定的?
  • 不,它是在编译时完成的。编译器知道传递了什么。
猜你喜欢
  • 1970-01-01
  • 2011-12-04
  • 2021-11-29
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
  • 2017-05-29
  • 2011-02-02
  • 2013-08-13
相关资源
最近更新 更多