package main import ( "fmt" "html/template" "log" "net/http" ) type Person struct { FirstName string LastName string } type Instructor Person type Participant struct { ID int64 Person Company string } type Briefing struct { Instructor Date string Time string State string Location string Participants []Participant } func main() { var i, j int64 var b Briefing mux := http.NewServeMux() i = 1 mux.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static/")))) mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { template.Must(template.ParseFiles("templates/index.html")).Execute(w, i) }) mux.HandleFunc("/add-participant/", func(w http.ResponseWriter, r *http.Request) { i++ template.Must(template.ParseFiles("templates/index.html", "templates/participant.html")).ExecuteTemplate(w, "participant", i) }) mux.HandleFunc("/submit/", func(w http.ResponseWriter, r *http.Request) { b.Instructor.FirstName = r.PostFormValue("instructor-first") b.Instructor.LastName = r.PostFormValue("instructor-last") b.Date = r.PostFormValue("date") b.Time = r.PostFormValue("time") b.State = r.PostFormValue("state") b.Location = r.PostFormValue("location") for j = 1; j <= i; j++ { b.Participants = append(b.Participants, Participant{ ID: j, Person: Person{ FirstName: r.PostFormValue("participant-first-" + fmt.Sprint(j)), LastName: r.PostFormValue(("participant-last-" + fmt.Sprint(j))), }, Company: r.PostFormValue(("participant-company-" + fmt.Sprint(j))), }) } fmt.Println(b) }) log.Fatalln(http.ListenAndServe(":8080", mux)) }