package main

import "net/http"

type MyHandler struct {
}

func (h *MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("hello world!"))
}

func main() {
    // 注册 uri 处理函数
    http.HandleFunc("/xxx", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("hello world!"))
    }
    // 开启 http 服务,并注册 handler 处理器
    http.ListenAndServe(":8000", &MyHandler{})
}

http 模块需要一个 handler (此 handler 需要实现 ServerHTTP 方法) 来处理 http请求,在开启 http 服务的时候没有提供 handler 则会使用默认 handler
(DefaultServeMux) 来处理。
http.HandleFunc 函数的作用是在 DefaultServeMux 注册对应 uri 的处理函数,此处理函数的定义和 ServerHTTP 一模一样。

func () ServeHTTP(w http.ResponseWriter, r *http.Request) {

}