第1种方法 http.ServeFile

9行:http.ServeFile一共需要3个参数,第一个参数是ResponseWriter,第二个参数是*Request,第三个参数是string,推荐使用filepath.Join(“www”, request.URL.Path)进行路径拼接。
ServeFile响应的请求必须包含已命名文件或目录。如果第三个参数是相对路径的文件名或目录,那么就是当前目录,也可以使用上级目录,但是通常并不会这么使用。
为了文件系统的安全,ServeFile不支持包含”..”路径的r.URL.Path请求,推荐使用 filepath.Join(文件夹, r.URL.Path) 写法。
12行:ListenAndServe的参数有2个,第一个参数是监听的网络地址(包括端口号),协议是tcp,第二个参数是需要调用的handler,由该handler处理接收的请求。如果使用nil,那么就是默认的handler,默认的handler是DefaultServeMux
第二种方法 http.FileServer

这种方法更简便
9行:ListenAndServe的参数有2个,第一个参数是监听的网络地址(包括端口号),协议是tcp,第二个参数是需要调用的handler,由该handler处理接收的请求。如果使用nil,那么就是默认的handler,默认的handler是DefaultServeMux。
这里我们不传入默认的handler,传入一个http.FileServer,需要传出1个参数。
FileServer返回包含文件系统的内容在根目录下一个处理HTTP请求的handler。
实现操作系统的文件系统,就需要使用http.Dir。
例如:http.Handle(“/”, http.FileServer(http.Dir(“/tmp”)))