1package main
2
3import (
4	"fmt"
5	"net/http"
6)
7
8var myHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
9	w.Write([]byte("hello world"))
10})
11
12type T1 struct {
13	Name string
14}
15
16func (t *T1) Handler(h http.Handler) http.Handler {
17	fmt.Println("#1", t.Name)
18	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
19		fmt.Println("#2", t.Name)
20		h.ServeHTTP(w, r)
21	})
22}
23
24func main() {
25	t := &T1{"myName"}
26	handler := t.Handler(myHandler)
27	http.ListenAndServe(":8080", handler)
28}
29