golang的函数

在golang中, 函数是第一类值(first-class object), 即函数可以赋值与被赋值. 换言之, 函数也可以作为ReceiverType, 定义自己的method. 实例:

http.HandleFunc(pattern string, handler func(ResponseWriter, *Request))

就是使用上述思想实现.

type HandlerFunc func(ResponseWriter, *Request)

func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request){

    f(w,r)

}

定义HandlerFunc类型, 本质为func(ResponseWriter, *Request). 然后定义ServeHTTP(RequestWriter, *Request)方法, 即让共实现 

type Handler interface{

    ServeHTTP(ResponseWriter, *Request)

}

感觉与Java思想很大冲突... 也显得很深奥.

posted @ 2016-09-07 13:22  zolo®  阅读(189)  评论(0编辑  收藏  举报