// attach to the struct a the ServeHTTP method, which turns MyHandler into an http handler to write responses given a request // the http request is named: "r", sometimes it is conventionally named: "req" // the http response is named "w", which you write data to, which you then send to the client as the body of the response func (this *MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { // http.Request has built in data for a URL_PATH path := r.URL.Path[1:] // logs the url path to the terminal log.PrintLn(path) data, err := ioutil.ReadFile(string(path)) if err == nil { // write the response body w.Write(data) } else { // write the response header w.Writeheader(404) // write the response body w.Write([]byte("404 HTTP Error - " + http.StatusText(404))) } }