最近在阅读Kubernetes早期版本的源码,发现```var *** func()```的写法,请问这种写法该如何理解?有什么好处吗?
```go
var testHookServerServe func(*Server, net.Listener) // used if non-nil
func (srv *Server) Serve(l net.Listener) error {
defer l.Close()
if fn := testHookServerServe; fn != nil {
fn(srv, l)
}
...
}
```
更多评论
func 规定了一个方法签名,任何符合这个签名的 func 都可以赋值给它,具体的 func 会有方法体。这里 fn(srv, l) 就是函数调用啊。这里的代码,肯定有一处会给 testHookServerServe 这个变量赋值。
#3