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

前端之家收集整理的这篇文章主要介绍了方法接收器上的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()
}

Playground

是否可以为methodReceiver创建方法别名?

是.您可以创建一个这样的别名:
var MethodReceiver = (*Person).methodReceiver

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

MethodReceiver(&p)

你可以see this in action on the Go Playground.

原文链接:https://www.f2er.com/go/187033.html

猜你在找的Go相关文章