Go echo

go mod の作成

go mod というファイルでパッケージ管理(外部ライブラリの管理)を行う

go mod init プロジェクト名
go mod init $(basename `pwd`)

※basename pwdでカレントディレクトリの取得

echo

軽量なWebフレームワーク

package main

import (
  "net/http"
  
  "github.com/labstack/echo"
  "github.com/labstack/echo/middleware"
)

var e = createMux()

func main() {
  e.GET("/", articleIndex)
  e.Logger.Fatal(e.Start(":8080"))
}

func createMux() *echo.Echo {
  // Echoのインスタンス作成
  e := echo.New()

  // 各種ミドルウェアを設定
  e.Use(middleware.Recover())
  e.Use(middleware.Logger())
  e.Use(middleware.Gzip())

  return e
}

func articleIndex(c echo.Context) error {
  return c.String(http.StatusOK, "Hello, World!")
}
var e = createMax()

Goプログラム(パッケージ)を実行した際は、依存パッケージの読み込み > グローバル定数 > グローバル変数 > init() > main() の順に実行(判定)されてく そのため、main()とinit()よりも先に上記のグローバル変数の部分が処理され、createMux()関数が呼び出される 上記のソースコードはmainパッケージのグローバル変数であるeにcreateMux()関数の戻り値を格納している箇所

パッケージの依存関係の管理

外部パッケージであるechoを利用するため、プログラムを起動する際にはechoのソースコードも必要 こうした外部パッケージを管理する手段として、Goではgo modコマンドが準備されている

go mod tidy

上記のコマンドは、ソースコードを検査して、どのような外部パッケージを利用しているのかを判定する ソースコード内で利用されている外部パッケージはgo.modとgo.sumというファイルに書き出される 直接的に利用しているパッケージはgo.modに間接的に利用しているパッケージはgo.sumに記載される go mod tidyコマンドで依存パッケージの書き出しが完了した後、外部パッケージのソースコードをPCにダウンロード(キャッシュ)する

go mod download

ダウンロードされた外部パッケージのソースコードは$HOME/go/pkg/modに配置される