小编典典

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

go

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

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


阅读 317

收藏
2020-07-02

共1个答案

小编典典

是。您可以这样命名:

var MethodReceiver = (*Person).methodReceiver

调用它时,必须提供一个指向人员对象的指针作为第一个参数:

MethodReceiver(&p)

您可以在Go Playground上看到这一点

2020-07-02