Go适配器

函数适配器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package main
import "net/http"
type Adapter func(http.ResponseWriter, *http.Request)
func (a Adapter) ServeHTTP(w http.ResponseWriter, r *http.Request) {
a(w, r) //在这个例子中a 等于handler w和r是传入的值
}
func main() {
http.Handle("/", Adapter(handler)) //http.Handle第二个参数要求实现http.Handle 通过Adapter(handler)将handler转为Adapter类型 又由于Adapter类型实现了http.Handler 所以此时handler也实现了http.Handler
http.ListenAndServe(":8000", nil)
}
func handler(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
w.Write([]byte("nihao"))
}