为了账号安全,请及时绑定邮箱和手机立即绑定

带接收器的功能类型

带接收器的功能类型

Go
慕勒3428872 2021-04-06 21:19:06
如何声明带有接收者作为类型的函数?我以为我可以做到以下几点,但是它抱怨语法错误:type myFunc func(s *State) (blah Blah) errfunc main() {    b := &Blah{}    s := &State{}    var f = myF    s.f(b)}func (s *State) myF(blah Blah) err {    ...}
查看完整描述

1 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

您可以定义将接收方作为其第一个参数的函数类型(本质上就是方法)。


type myFunc func(*State, Blah) error

然后,您可以使用方法表达式来创建该类型的值:


type Blah struct{}

type State struct{}


func (s *State) myF(Blah) error { return nil }


var f myFunc = (*State).myF

如果M在类型T的方法集中,则TM是可以作为常规函数调用的函数,该函数具有与M相同的参数,并以作为方法的接收者的附加参数为前缀。


[...]


表达方式


T.Mv

产生一个与Mv等效的函数,但第一个参数是显式接收器;它有签名


func(tv T, a int) int


查看完整回答
反对 回复 2021-04-19
  • 1 回答
  • 0 关注
  • 275 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号