方法接收器上的golang函数别名 [英] golang function alias on method receiver

查看:345
本文介绍了方法接收器上的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 

完整代码:

 包主

导入(
fmt


类型Person结构{
名称字符串
}

func method1(){
fmt.Println(method1)
}

var Method1 = method1

func(p * Person)methodReceiver(){
fmt.Println (方法接收呃)
}

var MethodReceiver = methodReceiver
$ b func main(){
method1()
Method1()
p:= Person {Nick}
p.methodReceiver()
p.MethodReceiver()
}

游乐场



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

解决方案

是。您可以创建一个别名,如下所示:

  var MethodReceiver =(* Person).methodReceiver 

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

  MethodReceiver(& p)

您可以在Go Playground上查看此功能


I can create method alias for an usual method:

func method1() {
    fmt.Println("method1")
}

var Method1 = method1

But cannot do the same for a method receiver:

type Person struct {
    Name string
}

func (p *Person) methodReciver() {
    fmt.Println("method reciver")
}

var MethodReciver = methodReciver

In this case I got the error on line var MethodReciver = methodReciver:

undefined: methodReciver

Full code:

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

Is it possible to create a method alias for methodReceiver?

解决方案

Yes. You can make an alias like this:

var MethodReceiver = (*Person).methodReceiver

When you call it, you have to provide a pointer to a person object as the first argument:

MethodReceiver(&p)

You can see this in action on the Go Playground.

这篇关于方法接收器上的golang函数别名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆