なんとなく触ってみたいなと前々から思ってたので、チャレンジ。普段はJavaを書いています。なので、型が欲しいという思いでGoに触れてみます。僕はGoについての知識0なので、どこまで簡単に作れるのかもみていきたいです。
いろんな規則や、わからないことがあれば、以下の2つのサイトを探りながら書いていきたいと思います。
事前準備
homebrew
このサイトからinstallできます
go
コマンド打つだけ、簡単
brew install go
versionは1.14
ri2kku~:$:
->> go version
go version go1.14 darwin/amd64
何がともあれGoのQuickStart
Go公式のQuickStartを参考に世界に挨拶してみます
https://golang.org/
ファイル作成 -> コード書く -> 動かす、まで一気に
ri2kku~/sandbox/go/go-sample:$:
->> vi hello_world.go
package main
import "fmt"
func main() {
fmt.Println("Hello, World")
}
ri2kku~/sandbox/go/go-sample:$:
->> go run hello_world.go
Hello, World
雑感
10分ほどで世界に挨拶できました!こんなに簡単なら早く触っておけばよかったです。シンタックス等はJavaと結構違っているのかな?セミコロンがないことにすごく違和感を感じていました。
Gin
次はFWを使って簡単なアプリを作成してみます
一番使われてそうなFWを選びました
https://github.com/gin-gonic/gin
インストール
Goのversionは1.1以降が必要らしいです
go get -u github.com/gin-gonic/gin
GinのQuickStart
書いて動かすところまで
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()
}
localhost:8080でlistenしてる
ri2kku~/sandbox/go/gin-sample:$:
->> go run example.go
GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
- using env: export GIN_MODE=release
- using code: gin.SetMode(gin.ReleaseMode)
[GIN-debug] GET /ping --> main.main.func1 (3 handlers)
[GIN-debug] Environment variable PORT is undefined. Using port :8080 by default
[GIN-debug] Listening and serving HTTP on localhost:8080
http://localhost:8080/ping
にアクセスすると、pong
が返ってくるようになっているのを確認できました
ri2kku~/sandbox/go/gin-sample:$:
->> curl http://localhost:8080/ping
{"message":"pong"}
雑感
すごく簡単に作れる模様?インストールがすごく楽ですぐに何かを試したい!という時にはさらっとかけそうな印象を持ちました、この時点では。まだ海面に触れたようなものなので、次はもう少し深く潜って簡単なWebアプリを作成したいと思います。