我可以为常用方法创建方法别名:
- 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()
- }
是否可以为methodReceiver创建方法别名?
是.您可以创建一个这样的别名:
- var MethodReceiver = (*Person).methodReceiver
当你调用它时,你必须提供一个指向person对象的指针作为第一个参数:
- MethodReceiver(&p)