主要包      导入(   “fmt”   “net/http”   )      indexHandler struct类型{   内容的字符串   }      func (ih * indexHandler) ServeHTTP http (w。ResponseWriter r * http.Request) {   fmt。流(w, ih.content)   }      函数main () {   http。处理(“/?indexHandler{内容:“hello world !”})   http。nil ListenAndServe (“8001”)   }      

去实现的http代码 <代码>服务步骤非常简单,首先注册路由,然后创建服务并开启监听即可。下文我们将从注册路由,开启服务,处理请求这几个步骤了解Golang如何实现<代码> http 服务。

  

  

<代码> http。HandleFunc 和<代码> http。处理> func (w http。ResponseWriter r * http.Requests) 签名的函数,而后者是一个结构体,该结构体实现了<代码> func (w http。ResponseWriter r * http.Requests) 签名的方法。

  

<代码> http。HandleFunc 和<代码> http。处理>         func HandleFunc(模式字符串处理函数(ResponseWriter, *请求)){   DefaultServeMux。HandleFunc(模式,处理程序)   }//HandleFunc注册处理程序函数给定的模式。   func (mux * ServeMux) HandleFunc(模式字符串处理函数(ResponseWriter, *请求)){   如果处理程序==nil {   恐慌(“http:零处理程序”)   }   mux。处理(模式,HandlerFunc(处理器))   }            函数处理(模式字符串处理程序处理程序){   DefaultServeMux。处理(模式,处理程序)   }      

可以看到这两个函数最终都由<代码> DefaultServeMux> 处理方法来完成路由的注册。

  

这里我们遇到两种类型的对象:<代码> ServeMux 和<代码>处理程序> 处理程序代码

  

  

<代码>处理程序是一个接口:

        类型的处理程序接口{   ServeHTTP (ResponseWriter *请求)   }