🐒

Go (gin) の事始め (メモ)

2022/07/21に公開

はじめに

初投稿です。何か変なこと書いてたら、ご指摘いただけると幸いです。

概要

最近、Goを初めて触ったので、備忘録として基本的なことを記録(Goというよりginの基本的なこと)。
Goの理解は死ぬほど浅いが、フレームワーク (gin) も使った。

プロジェクト作成

任意のディレクトリで実行。

$ go mod init プロジェクト名

「go.mod」ファイルが作成される。

gin導入

同ディレクトリ (ルートディレクトリ) で実行

$ go get -u github.com/gin-gonic/gin

gin導入完了。

main.goでサーバーを建てる

  • ルートディレクトリに、「main.go」ファイルを作成
  • とりあえず、以下のようにしてサーバーを建てる。
main.go
//パッケージ名
package main

//必要なものをインポート
import (
	"github.com/gin-gonic/gin"
)

//main関数はサーバ起動時 (「go run main.go」した時) に自動で最初に実行
func main() {
	router := gin.Default()

	router.Run("localhost:8000")
}

  • gin.Default()で、Engineというインスタンスを生成 (router変数に格納)し、*gin.Engineを返す。
  • router.Run("localhost:ポート番号")で、ポート番号指定。

HTTPメソッド

gin.Engineを使うと、gin.Engine.GET (POST, PUT, DELETE)のようなメソッドを使用可能。

故に、以下のようなことが可能。

main.go
package main

import (
	"github.com/gin-gonic/gin"
)

func main() {
	router := gin.Default()

	router.GET("/api", func(ctx *gin.Context) {
		ctx.JSON(200, gin.H{"message": "Hello"})
	})

	router.Run("localhost:8000")
}

go run main.goを実行し、localhost:8000/apiにアクセスすると、{"messagge":"Hello"}とブラウザに表示される。

gin.Hmap[string]interface{}と同義。
{key(string): value(string)}なものを返す。

gin.Context

gin.Contextは、リクエストの (GETされた, PUTした) データやパラメータ、またはエラー情報などいろんなものを含んだもの (自分なりの理解)。

上の例では、引数ctxがgin.Contextのポインタ型 (*gin.Context)。

GitHubで編集を提案

Discussion