HandleBase控制代碼的5種寫法
阿新 • • 發佈:2020-12-12
HandleBase控制代碼的5種寫法
package main import ( "encoding/json" "errors" "fmt" "log" "net/http" ) // 路由的第一種形式 type Router1 struct {} func (r1 *Router1) ServeHTTP(w http.ResponseWriter,r *http.Request) { type Res1 struct { Msg string } fmt.Println("歡迎來到路由1") res := &Res1{Msg:"hello router 1"} marshal, _ := json.Marshal(res) w.Write(marshal) } // 路由的第二種形式 func Router2() http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { fmt.Println("歡迎來到路由2") type Res2 struct { Msg string } res2 := &Res2{Msg:"touter2"} marshal, _ := json.Marshal(res2) w.Write(marshal) }) } func Router5(w http.ResponseWriter, r *http.Request) { type Res5 struct { Msg string } fmt.Println("歡迎來到路由5") res := &Res5{Msg:"hello router 5"} marshal, _ := json.Marshal(res) w.Write(marshal) } func main() { http.Handle("/router1", new(Router1)) http.Handle("/router2", Router2()) // 第三種路由 handler3 := func(http.ResponseWriter, *http.Request) { type Res3 struct { Msg string } fmt.Println("歡迎來到路由3") //res := &Res3{Msg:"hello router 3"} //marshal, _ := json.Marshal(res) //w.Write(marshal) } http.HandleFunc("/router3", handler3) http.HandleFunc("/router4", func(w http.ResponseWriter, r *http.Request) { type Res4 struct { Msg string } fmt.Println("歡迎來到路由4") res := &Res4{Msg:"hello router 4"} marshal, _ := json.Marshal(res) w.Write(marshal) }) http.HandleFunc("/router5", Router5) err := http.ListenAndServe(":9000", nil) if err != nil { log.Println(err, errors.New("伺服器啟動失敗")) } }