如何聲明帶有接收者作為類型的函數(shù)?我以為我可以做到以下幾點(diǎn),但是它抱怨語法錯誤: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貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個贊
您可以定義將接收方作為其第一個參數(shù)的函數(shù)類型(本質(zhì)上就是方法)。
type myFunc func(*State, Blah) error
然后,您可以使用方法表達(dá)式來創(chuàng)建該類型的值:
type Blah struct{}
type State struct{}
func (s *State) myF(Blah) error { return nil }
var f myFunc = (*State).myF
如果M在類型T的方法集中,則TM是可以作為常規(guī)函數(shù)調(diào)用的函數(shù),該函數(shù)具有與M相同的參數(shù),并以作為方法的接收者的附加參數(shù)為前綴。
[...]
表達(dá)方式
T.Mv
產(chǎn)生一個與Mv等效的函數(shù),但第一個參數(shù)是顯式接收器;它有簽名
func(tv T, a int) int
- 1 回答
- 0 關(guān)注
- 267 瀏覽
添加回答
舉報(bào)
0/150
提交
取消