自己紹介
Qiita初投稿なので軽く自己紹介です。
新卒から3年ぐらいはDBA周りを経験してだらだら無駄な時間を過ごしてましたが、
2年前ぐらいにjavaをメインにしたweb系の会社に転職してからようやく自己学習を始めた出遅れ感満載のエンジニアです。
Goを勉強しようと思った背景
注目言語だからちょっと挑戦してみたかったというのもありますが、
平行処理がすごい楽と知人から聞いたのでどんなもんなんだと興味本位で勉強したいと思ったからです。
webフレームワークを使おうと思った理由としては、自身がweb系が得意としているので、主にjava(Spring)との違いが感じやすいかと思ったからです。
環境
- Mac(M1): BigSur 11.5.2
- Go: go1.17.2 darwin/arm64
- エディタ: GoLand
- DB: MySQL 8.0
- パッケージ管理:Go Modules0
とりあえずのHello World
ginを追加して
go get github.com/gin-gonic/gin
main.goを書いて〜
package main
import (
"github.com/gin-gonic/gin"
"work-study-go/web/route"
)
func main() {
engine:= gin.Default()
// route.goのDefineRoutesを呼び出す
route.DefineRoutes(engine)
// ここでポートを指定する。
engine.Run(":3000")
}
ルーティングのコード書いて〜
※個人的にルーティングの定義は分けたかったので分けています。
package route
import (
"github.com/gin-gonic/gin"
"net/http"
)
func DefineRoutes(r gin.IRouter) {
r.GET("/", func(ctx *gin.Context){
// HTTPステータス200,レスポンスのdataに"Hello World"を返却
ctx.JSONP(http.StatusOK,gin.H{
"message": "ok",
"data": "Hello World",
})
})
}
実行してみる
go run main.go
Curlで叩いてみる。
curl http://localhost:3000/
route.goに定義したレスポンスの内容が返却されてますね。
% curl http://localhost:3000/
{"data":"Hello World","message":"ok"}
まとめ
初めてSpringを触った時はHello Worldを表示するだけでもちょっと詰まったのですが、
意外と特に詰まることなく簡単に実装できました。
※HTMLも全然わかってないのにいきなりThymeleafを使ったからですが。。。
まだ勉強中なので至らない点が多々ありますが、これを基にしてwebアプリを作っていきたいと思います。
その過程でまた投稿していくので、これからGoを勉強していく方に少しでも参考になればと思います。