方法接收器上的golang函数别名 [英] golang function alias on method receiver
本文介绍了方法接收器上的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)
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()
}
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屋!
查看全文