package main
import (
"net/http"
"sync"
)
type Router map[string]func(w http.ResponseWriter, r *http.Request)
var routerMap Router = make(Router)
var lock *sync.RWMutex = new(sync.RWMutex)
func main() {
routerMap.Regist("/", ce)
hand := routerMap.Handler("/")
http.HandleFunc("/", hand)
http.ListenAndServe(":1789", nil)
}
func ce(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(r.URL.Path))
}
func (self Router) Regist(pattern string, f func(w http.ResponseWriter, r *http.Request)) {
lock.Lock()
defer lock.Unlock()
self[pattern] = f
}
func (self Router) Handler(pattern string) func(w http.ResponseWriter, r *http.Request) {
lock.RLock()
defer lock.RUnlock()
return self[pattern]
}
当自己写http服务的时候,路由是很重要的,我这里分享我在路由使用的时候是如何注册的
最新推荐文章于 2023-07-17 11:10:51 发布