at backyard

Color my life with the chaos of trouble.

Go Modulesを試してみた。(書きかけ)

Go Modulesを試してみた。

パッと見だと自分の頭ではうまく理解できなかったので、手を動かして理解しようとした。これは自分用に後で見返すための備忘録的な役割を担っている。
また自分は普段はあまりGoを使っていないので、見当違いのことを書いている可能性もある。そこはご了承いただきたい。

基本的に下記のドキュメントを参照している

github.com

まだ、自分用のメモとして残したい故に書いているので、この文章は追記前提で書いている。

試したときの環境

macでgo 1.12を使っている

go version
go version go1.12 darwin/amd64

go mod initで初期化

GOPATHの外側で作業用のディレクトリを作成する

ドキュメントと違っていても動くには動くよう。
特に問題なし?

mkdir hello
cd hello
go mod init hello

これで初期化完了。

ちなみにドキュメントでは下記のように書いていた。
おそらくmoduleというものは下記のように書いたほうが良いのかもしれない。
あまりココらへんをちゃんと理解していないので、勉強する必要ありそう。 とりあえず、上のコードでも動くようだ。

mkdir -p /tmp/scratchpad/hello
cd /tmp/scratchpad/hello

go m

コードを書く。 ginを試してみたかったこともあり、quick startしてみた。

github.com

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
}

buildした段階でインストールが必要なパッケージはダウンロードされる。 go.modが同じディレクトリ上にあるかでmodulesは判断しているようだ。

go build

buildされたバイナリはそのまま実行できるよう。

go modulesを使った場合、インストールしたパッケージはどこにダウンロードされる?

$GOPATH配下の下記のディレクトリに入っていた。

$GOPATH/pkg/mod/{ここに入る}

参考にした記事

github.com

qiita.com

www.wantedly.com

qiita.com