方法接收器上的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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |