WSL2 上で Go Module したい

以前に技術調査目的で作成した Go 環境を Go Module を使えるようにバージョンアプしたときの作業メモ。

まずは、現状の確認。

1
2
$ go version
go version go1.6.2 linux/amd64

Go Module を使いたいのにバージョンが低い。

いったん、Go をアンインストールする。

1
$ sudo apt remove golang-go

最新バージョンをダウンロードし、/usl/local に展開する。

1
2
3
4
$ wget https://golang.org/dl/go1.16.linux-amd64.tar.gz
$ file go1.16.linux-amd64.tar.gz
go1.16.linux-amd64.tar.gz: gzip compressed data
$ sudo tar -C /usr/local -xzf go1.16.linux-amd64.tar.gz

~/.bashrc に環境変数を追加する。

1
2
3
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

インストールされていることを確認する。

1
2
$ go version
go version go1.16 linux/amd64

空のディレクトリー内で go mod init コマンドを実行する

1
2
3
4
5
6
7
8
9
$ go mod init example.com/hoge/hello
go: creating new go.mod: module example.com/hoge/hello
go: to add module requirements and sums:
go mod tidy

$ cat go.mod
module example.com/hoge/hello

go 1.16

サンプルコード hello.go を作成する。

1
2
3
4
5
6
7
8
9
10
11
package main

import (
"fmt"

"rsc.io/quote"
)

func main() {
fmt.Println(quote.Hello())
}

go mod tidy コマンドを実行してモジュールリストを更新する。

1
2
3
$ go mod tidy
go: finding module for package rsc.io/quote
go: found rsc.io/quote in rsc.io/quote v1.5.2

go.mod が更新されていることを確認する。

1
2
3
4
5
module hello

go 1.16

require rsc.io/quote v1.5.2

実行する。

1
2
$ go run hello
Hello, world.