当前位置: 首页 > 面试题库 >

方法接收器上的golang函数别名

丁宏浚
2023-03-14
问题内容

我可以为常用方法创建方法别名:

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是一个指针。 我有点困惑,因为有 两种方法可以做同一件事, 而且不确定要遵循哪种方法。尽管大多数代码遵循使用指针字段调用函数的 约定 。我想念什么吗?