どうも1時間前にGoを学び始めたともわか(@tomorrowSLog)です
Goを使ってローカル環境でサクッと遊んでみたので備忘録としてそのアウトプットをします。
レッツGoooooooo!!!!!!
目次
- 開発環境
- Goのインストール
- Hello Go
- create go.mod
- create makefile
- get gin
- go run
- まとめ
開発環境
macOS モハベ
1 2 |
$ go version go version go1.13 darwin/amd64 |
Goのインストール
1 |
$ brew install go |
ってした気がする。詳しくはwebで!
Hello Go
最初だし Hello Go!
をしよう
1 2 3 |
~$ mkdir tomowarkar ~$ cd tomowarkar ~/tomowarkar$ touch main.go |
main.go
1 2 3 4 5 6 7 8 9 |
package main import ( "fmt" ) func main() { fmt.Println('Hello Go!') } |
go run
1 2 |
~/tomowarkar$ go run main.go Hello Go! |
create go.mod
modules管理ファイルを作ります
1 |
~/tomowarkar$ go mod init tomowarkar |
go.mod
中身はこんな感じ(自動生成)
1 2 3 |
module tomowarkar go 1.13 |
参考 Go Modulesの概要とGo1.12に含まれるModulesに関する変更budougumi0617.github.io
create makefile
シェルスクリプトをごにょごにょして、開発を楽にしてくれるmakefileも作ります
1 |
~/tomowarkar$ touch makefile |
makefile
makefileの中身を仮置きします(意味は後々…)
1 2 |
dev: go run main.go |
参考 Go言語開発を便利にするMakefileの書き方qiita.com
get gin
それではメインのAPI部分をいい感じに実装できるフレームワークGinを使っていきましょう。
Gin とは
Gin is a web framework written in Go (Golang). It features a martini-like API with much better performance, up to 40 times faster thanks to httprouter. If you need performance and good productivity, you will love Gin.
めっちゃパフォーマンス良くて、めっちゃ使いやすいGoのフレームワークだぜ!!!
って書いてます。
参考
Gin Web Frameworkgithub.com
Gin の導入
もはや giuhub
の README
に書いてあるままなのですが、
1 |
~/tomowarkar$ go get -u github.com/gin-gonic/gin |
go.sum
という新しいファイルができ、 go.mod
もアップデートされたことがわかります。
update main.go
main.go
をAPI仕様書き換えていきます
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) r.Run() // listen and serve on 0.0.0.0:8080 } |
こちらも README
の Quick start
に書いてあるままを拝借。
go run
make dev
Hello Go!
の時と同じように go run
をしたいところですが、 先ほどつくった makefile
をうまく活用していきましょう。
make dev
と実行してみてください
1 2 3 4 5 |
~/tomowarkar$ make dev go run main.go [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached. ... [GIN-debug] Listening and serving HTTP on :8080 |
このようにサーバーが立ち上がりました。
makefile
で先ほど書いた内容は dev
って打ったら go run main.go
を実行してねというおまじないでした。
なので、 make dev
と実行することで
makefile
からdev
を呼び出しgo run main.go
が実行されるmain.go
のなかの処理が読まれる- サーバーが立ち上がる
となったわけですね
access localhost:8080
ここでブラウザからlocalhostにアクセスしても 404 page not found
が帰ってきます。なぜでしょう。
main.go
を詳しくみてみると、 GET /ping
で JSONを返すよと書いてあります。
それでは今度は localhost:8080/ping
にアクセスします。
すると今度は {"message":"pong"}
このように期待するJSON形式のレスポンスが返ってきました。
まとめ
- Goはいいぞぉ
- Ginはいいぞぉ
ということで、これからどんどんGoを学んでいきたいと思います。ではでは
コメントを残す