说我有这个:
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一样编译并运行。
答案 0 :(得分:2)
是的。 Go书将其称为方法值。
通常,我们选择并调用相同表达式中的方法,如 p.Distance(),但可以将这两个操作分开。的 选择器p.Distance产生一个方法值,该函数绑定一个 方法(Point.Distance)到特定的接收器值p。该功能 然后可以在没有接收器值的情况下调用;它只需要 非接收方参数。
(来源:Go编程语言,Donovan和Kernighan,第164页。)