是否会自动绑定功能来构造?

时间:2018-12-02 12:34:28

标签: go

说我有这个:

type Handler struct{}

func helper(f func()){
   f() // calls h.Mount() or just Mount() w/o reference to h?
}

func (h Handler) Mount() {}

func init(){
  h:=Handler{}
  helper(h.Mount)
}

当辅助函数收到h.Mount(一个函数)时,可以直接调用它,还是需要引用处理程序h才能正确调用它?这样便可以像idk一样编译并运行。

1 个答案:

答案 0 :(得分:2)

是的。 Go书将其称为方法值。

  

通常,我们选择并调用相同表达式中的方法,如   p.Distance(),但可以将这两个操作分开。的   选择器p.Distance产生一个方法值,该函数绑定一个   方法(Point.Distance)到特定的接收器值p。该功能   然后可以在没有接收器值的情况下调用;它只需要   非接收方参数。

(来源:Go编程语言,Donovan和Kernighan,第164页。)