将参数作为接口传递[重复]

Posted

技术标签:

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

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

【问题讨论】:

go 中的一切都是按值传递的,包括指针。 Go 中没有“按引用传递”。 【参考方案1】:

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

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

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

【讨论】:

那么传递的版本是在运行时确定的? 不,它是在编译时完成的。编译器知道传递了什么。

以上是关于将参数作为接口传递[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C#将函数作为参数传递[重复]

将函数作为参数传递[重复]

将列表作为可变参数传递[重复]

C#将函数作为参数传递[重复]

传递方法作为参数[重复]

在函数c ++中将变量作为默认参数传递[重复]