我可以为常用方法创建方法别名:
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:
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?
methodReceiver
是。您可以这样命名:
var MethodReceiver = (*Person).methodReceiver
调用它时,必须提供一个指向人员对象的指针作为第一个参数:
MethodReceiver(&p)
您可以在Go Playground上看到这一点。