知识点 路由

package demo_route_mux_default

import (
"fmt"
"log"
"os"
"os/signal"
"time"

//"net"
"net/http"
)

func (*Hello) HelloServer1(w http.ResponseWriter, req *http.Request) {

fmt.Fprint(w, "hello world1")
}
func (*Hello) HelloServer2(w http.ResponseWriter, req *http.Request) {

fmt.Fprint(w, "hello world2")
}

func (*Hello) ServeHTTP(w http.ResponseWriter, req *http.Request) {

fmt.Fprint(w, "hello world0")
}

type Hello struct {
}

func main() {
mux := http.NewServeMux()
mux.Handle("/", &Hello{})
mux.HandleFunc("/test", (&Hello{}).HelloServer1)
mux.HandleFunc("/test2", (&Hello{}).HelloServer2)
//http.HandleFunc("/test", HelloServer1)
err := http.ListenAndServe(":8080", mux)
if err != nil {
log.Fatal("ListenAndServe: ", err.Error())
}
}

第三类(更底层)
package main

import (
"log"
"net/http"
"os"
"os/signal"
"time"
)

func main() {
server := &http.Server{
Addr: ":4000",
WriteTimeout: time.Second * 2, // 4
}

quit := make(chan os.Signal)
signal.Notify(quit, os.Interrupt)

mux := http.NewServeMux()
mux.Handle("/", &myHandler{})
mux.HandleFunc("/bye", sayBye)

go func() {
<-quit

if err := server.Close(); err != nil {
log.Fatal("Close server:", err)
}
}()

server.Handler = mux
log.Print("Starting server... v3")
err := server.ListenAndServe()
if err != nil {
if err == http.ErrServerClosed {
log.Print("Server closed under request")
} else {
log.Fatal("Server closed unexpected")
}
}
}

func sayBye(w http.ResponseWriter, r *http.Request) {
time.Sleep(3 * time.Second)
w.Write([]byte("Bye bye this is version 3!"))
}

type myHandler struct{}

func (*myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello v3, the request URL is: " + r.URL.String()))
第一类
package main

import (
"log"
"net/http"
)

func main() {
mux := http.NewServeMux()
mux.Handle("/", &myHandler{})
mux.HandleFunc("/bye", sayBye)

log.Println("Starting server... v2")
log.Fatal(http.ListenAndServe(":4000", mux))
}

func sayBye(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Bye bye this is version 2!"))
}

type myHandler struct{}

func (*myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello v2, the request URL is: " + r.URL.String()))
}

猜你喜欢

转载自www.cnblogs.com/chu-12345/p/11368826.html