http包的作用及使用
go的http包是go的web编程的核心内容,go的web框架本质上都是基于http提供的组件进行再度封装。我们来看一下http基本的使用:
func main() {
http.Handle("/get", GetVal())
http.Handle("/hello", Hello())
http.Handle("/demo", http.HandlerFunc(Demo))
if err := http.ListenAndServe("0.0.0.0:9191", nil); err != nil {
fmt.Println("err: %v", err)
}
}
func GetVal() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
val := "get\n"
fmt.Fprintf(w, val)
}
}
func Hello() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
val := "hello\n"
w.Write([]byte(val))
}
}
func Demo(w http.ResponseWriter, r *http.Request) {
val := "get\n"
fmt.Fprintf(w, val)
}
代码非常简单,就是为路由注册一个handler来处理请求并写入响应,我们来探究一下它的内部是如何实现的