Go言語によるWebサーバ構築

Go言語でWebサーバを起動

  • Webサーバを起動
  • テンプレートファイルを読み込んで表示

Go mainファイル

以下のソースコードを書く main.go


package main

import (
"log"
"net/http"
"path/filepath"
"sync"
"text/template"
)

type templateHandler struct {
once sync.Once
filename string
temp1 *template.Template
}

func (t *templateHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
t.once.Do(func() {
t.temp1 =
template.Must(template.ParseFiles(filepath.Join("templates", t.filename)))
})
t.temp1.Execute(w, nil)
}

func main() {
http.Handle("/", &templateHandler{filename: "template.html"})
// Webサーバを開始します
if err := http.ListenAndServe(":8080", nil); err != nil {
log.Fatal("ListenAndServe:", err)
}
}

テンプレートファイル

$ mkdir templates

<html>
<head>
<title>template</title>
</head>

<body>
Go Template
</body>
</html>

起動

$ go run main.go

http://localhost:8080 にアクセスするとテンプレートファイルが表示されているはず・・・