概要
Golangの勉強のついでに、Go初学者向け、はたまたプログラミング初学者と共有できないかと考えた為。
なので、今回はツールなどは使用せずGolangだけで書いて行こうと思う。
第1回なので、まずは準備したhtmlを表示させるところまで作成。
####今回のソース
https://github.com/takuma-goto310/sample_golang
準備
Macbook
Goのインストール
参考サイト
初めてのgo!インストールまで。
適当なディレクトリでサンプルソースをgit cloneする
tanakataro $ git clone https://github.com/takuma-goto310/sample_golang.git
ディレクトリ構成
.
├── README.md
├── app
│ ├── controller
│ │ └── app.go
│ └── view
│ ├── footer.html
│ ├── header.html
│ └── index.html
├── public
│ ├── css
│ │ └── bootstrap-3.3.6.min.css
│ ├── fonts
│ │ ├── glyphicons-halflings-regular.ttf
│ │ ├── glyphicons-halflings-regular.woff
│ │ └── glyphicons-halflings-regular.woff2
│ ├── img
│ │ └── favicon.png
│ └── js
│ ├── bootstrap-3.3.6.min.js
│ └── jquery-2.2.4.min.js
└── run
├── main
└── main.go
正直publicには使っていないものもあるが、今後使う予定なので無視。
起動方法
ターミナルでrunディレクトリに移動する。
run $ go run main.go
内容
重要な部分だけここで紹介。
- sample_golang/app/controller/app.go
// Index is method to render Top page.
func Index(rw http.ResponseWriter, request *http.Request) {
log.Println("call Index")
// htmlを表示
err := parseTemplate().ExecuteTemplate(rw, "index.html", "")
if err != nil {
outputErrorLog("HTML 描画 エラー", err)
log.Fatalln("エラーのため強制終了")
}
}
// parse HTML
func parseTemplate() *template.Template {
tmpl, err := template.ParseGlob("../app/view/*.html")
if err != nil {
outputErrorLog("HTML パース 失敗", err)
}
return tmpl
}
// output error log
func outputErrorLog(message string, err error) {
log.Println(message)
log.Println(err)
}
準備したhtmlを表示し、失敗すればエラーログを吐く。
- sample_golang/run/main.go
func main() {
setRoute()
// 指定したポートをListen
http.ListenAndServe(":8080", nil)
}
// ルーティング設定
func setRoute() {
// 静的ファイルのルーティング
http.Handle("/public/", http.StripPrefix("/public/", http.FileServer(http.Dir("./public"))))
// TOP画面
http.HandleFunc("/index", controller.Index)
}
ポート番号8080へ通し、/index
へのリクエストの際には上記のcontrollerのIndexメソッドを呼ぶ。
- sample_golang/app/view.index.html
<header class="jumbotron">
<div class="container">
<div class="row">
<h1>SAMPLE GO</h1>
</div>
</div>
</header>
大きくSAMPLE GO
と表示するだけ。
実際に動かしてみる
動いた。
次は、これよりは難しいけど簡単なwebアプリケーションを作成する。