package main

//效率最高的一个方法
import (
"fmt"
"io"
"log"
"net/http"
"os"
"strings"
"time"
) var mux map[string]func(http.ResponseWriter, *http.Request) func main() {
//声明一个server
server := http.Server{
Addr: ":8080", //监听端口
Handler: &handler{}, //handler
ReadTimeout: 5 * time.Second, //监听超时
}
//路由列表
mux = make(map[string]func(http.ResponseWriter, *http.Request))
mux["/hello"] = hello //开始监听
err := server.ListenAndServe()
if err != nil {
log.Fatal(err)
}
} type handler struct{} func (*handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
//实现静态文件输出
if strings.Contains(r.URL.String(), "/static/") {
fmt.Println("111")
wd, err := os.Getwd()
if err != nil {
log.Fatal(err)
}
//此处使用.Serve.HTTP(w, r)的原因参考下面资料
http.StripPrefix("/static/", http.FileServer(http.Dir(wd))).ServeHTTP(w, r)
return
}
// 动态匹配路由
if h, ok := mux[r.URL.String()]; ok {
//匹配成功执行函数
h(w, r)
return
}
// 没有匹配成功则输出URL
io.WriteString(w, "URL:"+r.URL.String())
} //输出hello
func hello(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, "hello")
}

参考资料

最新文章

  1. ES6之变量常量字符串数值
  2. 架构师养成记--8.Queue
  3. js作用域问题
  4. 初始Python
  5. jdk安装和环境变量配置
  6. 【代码笔记】iOS-创建具有中划线的文字
  7. js随笔,css和js禁止网页选择文本,table的class样式使得td的class样式失效,jquery获得元素坐标
  8. vim(5)vim下wimrc的配置,解决中文乱码问题
  9. 9G10内核时钟tick实现
  10. linux命令备份
  11. UVaLive 6805 Pantun Grader (恶心的模拟)
  12. HTML基础和表格
  13. WPF DataGrid某列使用多绑定后该列排序失效,列上加入 SortMemberPath 设置即可.
  14. Timestamp转Calendar
  15. UVA 11100 The Trip, 2007 (贪心)
  16. Ubuntu18.04 安装搜狗输入法后无法启动的问题
  17. expr的字符串操作 表达式: length, index, match, substr等
  18. Java数组逆序排列
  19. Celery 分布式任务队列入门
  20. 使用openssh-clients的scp命令来传输文件

热门文章

  1. linux 关闭端口
  2. webservice ssl双向认证配置
  3. Ajax的原理和应用
  4. SharePoint 2013 项目部署
  5. Docker与PAAS
  6. Java类集-set
  7. Hibernate单向“多对一”关联
  8. scrollTop()--返回或设置匹配元素的滚动条的垂直位置
  9. JWT—JSON Web Token - 理解JWT网络间应用用户安全认证交互设计
  10. 牛散NO.2:MACD西施说风情,柳下惠高位勿迷情