2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

プログラミング初学者向け Go入門 #1

Last updated at Posted at 2018-11-20

概要

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と表示するだけ。

実際に動かしてみる

スクリーンショット 2018-11-20 14.37.03.png

動いた。

次は、これよりは難しいけど簡単なwebアプリケーションを作成する。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?