我可以为常用方法创建方法别名:
func method1() {
fmt.Println("method1")
}
var Method1 = method1
但是不能对方法接收者做同样的事情:
type Person struct {
Name string
}
func (p *Person) methodReciver() {
fmt.Println("method reciver")
}
var MethodReciver = methodReciver
在这种情况下,我在网上出现了错误var MethodReciver = methodReciver
:
undefined: methodReciver
完整代码:
package main
import (
"fmt"
)
type Person struct {
Name string
}
func method1() {
fmt.Println("method1")
}
var Method1 = method1
func (p *Person) methodReceiver() {
fmt.Println("method receiver")
}
var MethodReceiver = methodReceiver
func main() {
method1()
Method1()
p := Person{"Nick"}
p.methodReceiver()
p.MethodReceiver()
}
操场
是否可以为其创建方法别名methodReceiver
?
是。您可以这样命名:
var MethodReceiver = (*Person).methodReceiver
调用它时,必须提供一个指向人员对象的指针作为第一个参数:
MethodReceiver(&p)
您可以在Go Playground上看到这一点。
问题内容: 我有这个示例代码 无法正常工作,因为其接收器不是指针类型。 如果我将方法更改为指针接收器,那么我希望它可以正常工作,如下所示: 编译会导致以下错误: 如何在不创建副本的情况下使接口 和 方法实现实际实例的值? 这是一个可入侵的代码段:https : //play.golang.org/p/ghW0mk0IuU 问题答案: 您指向结构的指针应实现该接口。这样,您可以修改其字段。 查看我如
如果我有一个函数: 然后我可以测试它(我使用mocha sinon),我在其中监视外部库方法,如下所示: …但如果实现将内部定义的函数传递给我监视的方法,该怎么办? 我如何测试它?
问题内容: 我有一个类似于以下的代码 这不是实际的生产代码,但这是简化的版本。 问题:-如果取消注释该行,则会出现编译错误 如何执行通过Invoke()函数作为参数接收的函数? 什么是实现此目标的正确方法? 问题答案: 您可以使用的或方法将其作为函数调用。与所有方法一样,这种恐慌是错误的类型。 http://play.golang.org/p/xGmNLDcLL_
本文向大家介绍Exchange在接收连接器上启用匿名中继的方法,包括了Exchange在接收连接器上启用匿名中继的方法的使用技巧和注意事项,需要的朋友参考一下 Exchange邮件系统默认是关闭匿名中继的,也就是说用户发送外网邮件必须经过验证才可以发送,如果匿名发送外网邮件就会出现550 5.7.1 Unable to relay的错误。 但有些设备,比如扫描仪或者ERP系统等等后台可能需要嵌入S
问题内容: 我正在尝试在代码中使用Java 8方法引用。有四种类型的方法引用可用。 静态方法参考。 实例方法(绑定接收器)。 实例方法(UnBound接收器)。 构造函数参考。 随着和我有没有问题,但和真搞糊涂了。在接收器中,我们使用对象引用变量来调用如下方法: 在接收器中,我们使用类名来调用如下方法: 我有以下问题: 实例方法对不同类型的方法引用有何需求? 和接收方方法引用之间有什么区别? 在哪
问题内容: 在Go中,如果我定义了一个以指针作为接收器的函数,那么它不应该只允许从指针调用该函数吗?为什么可以从值本身调用此函数并产生相同的效果。 例如,在以下程序中:m1.reset()和m2.reset()具有相同的效果。即使m1是一个值而m2是一个指针。 我有点困惑,因为有 两种方法可以做同一件事, 而且不确定要遵循哪种方法。尽管大多数代码遵循使用指针字段调用函数的 约定 。我想念什么吗?