package main import ( "embed" "html/template" "log" "net/http" ) //go:embed static var staticFiles embed.FS type Guestbook struct { Comments []string Count int } func indexHandler(writer http.ResponseWriter, request *http.Request) { html, err := template.ParseFS(staticFiles, "static/index.html") check(err) store := TxtStore("comments.txt") guestbook, err := store.GetGuestbook() check(err) err = html.Execute(writer, guestbook) check(err) } func newHandler(writer http.ResponseWriter, request *http.Request) { comment := request.FormValue("comment") store := TxtStore("comments.txt") err := store.AddComment(comment) check(err) http.Redirect(writer, request, "/", http.StatusFound) } func main() { http.HandleFunc("/", indexHandler) http.HandleFunc("/new", newHandler) var staticFS = http.FS(staticFiles) http.Handle("/static/", http.FileServer(staticFS)) err := http.ListenAndServe("0.0.0.0:80", nil) log.Fatal(err) } func check(err error) { if err != nil { log.Fatal(err) } }