您的位置:首页 > 理论基础 > 计算机网络

当自己写http服务的时候,路由是很重要的,我这里分享我在路由使用的时候是如何注册的

2016-02-22 14:39 507 查看
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]
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  golang1.5 golang Go语言