带接收器的功能类型

如何声明带有接收者作为类型的函数?


我以为我可以做到以下几点,但是它抱怨语法错误:


type myFunc func(s *State) (blah Blah) err


func main() {

    b := &Blah{}

    s := &State{}


    var f = myF

    s.f(b)

}


func (s *State) myF(blah Blah) err {

    ...

}


慕勒3428872
浏览 276回答 1
1回答

万千封印

您可以定义将接收方作为其第一个参数的函数类型(本质上就是方法)。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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go