func.go 755 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package main
  2. import (
  3. "fmt"
  4. "html/template"
  5. "net/http"
  6. )
  7. type User struct {
  8. ID int
  9. Name string
  10. Active bool
  11. }
  12. func IsUserOdd(u *User) bool {
  13. return u.ID%2 != 0
  14. }
  15. func main() {
  16. tmplFuncs := template.FuncMap{
  17. "OddUser": IsUserOdd,
  18. }
  19. tmpl, err := template.
  20. New("").
  21. Funcs(tmplFuncs).
  22. ParseFiles("func.html")
  23. if err != nil {
  24. panic(err)
  25. }
  26. users := []User{
  27. User{1, "Vasily", true},
  28. User{2, "Ivan", false},
  29. User{3, "Dmitry", true},
  30. }
  31. http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
  32. err := tmpl.ExecuteTemplate(w, "func.html",
  33. struct {
  34. Users []User
  35. }{
  36. users,
  37. })
  38. if err != nil {
  39. panic(err)
  40. }
  41. })
  42. fmt.Println("starting server at :8080")
  43. http.ListenAndServe(":8080", nil)
  44. }