如何声明带有接收者作为类型的函数?我以为我可以做到以下几点,但是它抱怨语法错误: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
- 1 回答
- 0 关注
- 275 浏览
添加回答
举报
0/150
提交
取消