当自己写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] }
相关文章推荐
- Go 语言 Channel 实现原理精要
- Go语言将支持Android
- Golang实现的聊天程序服务端和客户端代码分享
- Go语言入门教程之Arrays、Slices、Maps、Range操作简明总结
- GO语言异常处理机制panic和recover分析
- go语言执行windows下命令行的方法
- Go语言计算两个经度和纬度之间距离的方法
- Go语言排序与接口实例分析
- Go语言导出内容到Excel的方法
- go语言实现sqrt的方法
- Go语言MessageBox用法实例
- Go语言判断指定文件是否存在的方法
- go语言制作的zip压缩程序
- go语言channel实现多核并行化运行的方法
- Go语言MD5加密用法实例
- go语言使用scp的方法实例分析
- Go语言中的switch用法实例分析
- Golang学习笔记(三):控制流
- go语言检测文件是否存在的方法
- Go语言里的结构体文法实例分析