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

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


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


尚方宝剑之说
浏览 208回答 3
3回答

HUX布斯

是的。您可以像这样创建别名:var MethodReceiver = (*Person).methodReceiver当你调用它时,你必须提供一个指向 person 对象的指针作为第一个参数:MethodReceiver(&p)您可以在 Go Playground 上看到这一点。

LEATH

这称为方法表达式 var MethodReceiver = (*Person).methodReceiver
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go