加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 19:19:37 所属栏目:大数据 来源:网络整理
导读:我可以为常用方法创建方法别名: func method1() { fmt.Println("method1")}var Method1 = method1 但是对于方法接收器不能做同样的事情: type Person struct { Name string}func (p *Person) methodReciver() { fmt.Println("method reciver")}var MethodR
我可以为常用方法创建方法别名:
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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读