$ go mod init webapp
$ mkdir -p cmd/web
$ mkdir -p internal/handlers
$ mkdir html
$ touch cmd/web/main.go
$ touch cmd/web/routes.go
$ touch html/home.jet
$ touch internal/handlers/handlers.go
home.jetは、Webページのテンプレートファイル
home.jet
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <h1>jet test</h1> </body> </html>
handlers.go
package handlers
import (
"log"
"net/http"
"github.com/CloudyKit/jet/v6"
)
var views = jet.NewSet(
jet.NewOSFileSystemLoader("./html"),
jet.InDevelopmentMode(),
)
func Home(w http.ResponseWriter, r *http.Request){
err := renderPage(w, "home.jet", nil)
if err != nil {
log.Println(err)
}
}
func renderPage(w http.ResponseWriter, tmpl string, data jet.VarMap) error {
view, err := views.GetTemplate(tmpl)
if err != nil {
log.Println(err)
return err
}
err = view.Execute(w, data, nil)
if err != nil {
log.Println(err)
return err
}
return nil
}
route.go
package main
import (
"webapp/internal/handlers"
"net/http"
"github.com/bmizerany/pat"
)
func routes() http.Handler {
mux := pat.New()
mux.Get("/", http.HandlerFunc(handlers.Home))
return mux
}
main.go
package main
import (
"log"
"net/http"
)
func main(){
mux := routes()
log.Println("Starting web server on port 8080")
_ = http.ListenAndServe(":8080", mux)
}
$ go run cmd/web/*.go

Echoとかを使わずに、jetなど色々な書き方があるんやな
Webサーバーの作成には、bmizerany/patモジュールを使用