如何聲明帶有接收者作為類型的函數?我以為我可以做到以下幾點,但是它抱怨語法錯誤: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 關注
- 273 瀏覽
添加回答
舉報
0/150
提交
取消