自分用メモです。
ハマった所を記載します。
基本的には以下の記事に沿う形で出来ました。
Visual Studio CodeでGo言語のデバッグ環境を整える
なお、Go は初心者となり、正確ではない記述などもあるかもしれません。
環境
- macOS Catalina
- Go 1.16.3
- VS Code 1.55.2
-
$GOPATH
を設定済み -
$GOPATH/bin
を環境変数$PATH
へ追加済み
経緯
以下をやろうとしていました。
上記では IntelliJ IDEA Community版を使って Go のデバッガーを動かしています。
ただし、現状で以下の比較表を見ると IntelliJ IDEA Community版では Go 言語は使えなさそうでした。
その為、VS Code で同じ環境を作ることを目標としました。
ハマったポイント
go get が失敗する
以下のようなエラーで go get
が失敗。
$go get github.com/golang/example/hello: module github.com/golang/example/hello: Get "https://proxy.golang.org/github.com/golang/example/hello/@v/list": x509: certificate is valid for xxxxxx, not proxy.golang.org
これは理由を調べると事象が発生した該当環境で proxy.golang.org
がブロックされていたことが原因でした。
これについては proxy.golang.org
を利用しないように以下のコマンドを実行すれば事象が回避できました。
# 設定を上書き
$go env -w GOPROXY=direct
# 確認
$go env |grep GOPROXY
GOPROXY="direct"
これは環境依存の問題なので多くの場合は事象は発生しなさそうです。
VS Code から Go を実行すると失敗する
HelloWorld 用のファイルを作成。
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
Terminal からは成功
$go run hello.go
hello world
ただし、当該ファイルを VS Code で開いて VS Code 上の「Run and Debug」から実行すると以下のエラーとなる。
go: go.mod file not found in current directory or any parent directory; see 'go help modules'
exit status 1
Process exiting with code: 1
launch.json
を設定すればうまくいくのかもしれませんが、以下あたりを見つつ、やってみたものの、うまくいきませんでした。
エラーを改めて見ると go.mod
がない、ということでこのキーワードを元に調査。
Go Modulesとマルチモジュール構成でGo Homeする方法
上記記事を参考にやってみた所、成功。
まずは Terminal で以下を実施。
# ディレクトリ作成
$mkdir hello-module
# 移動
$cd hello-module
# カレントディレクトリに go.mod を作る
$go mod init hello-module
$ls
go.mod
# こんなことが書いてある
$cat go.mod
module hello-module
go 1.16
# helloworld を書く
$vi hello.go
# Terminal 上で動くことを確認
$ go run hello.go
hello world
その後、VS Code で上記フォルダ(今回の場合 hello-module
) を開いて同じように「「Run and Debug」を実行した所、無事「hello world」の出力を確認。
また、ブレークポイントを設定することでデバッグなども出来る事を併せて確認。
以下などを見るとモジュール対応モードになっていることが影響しているかもしれませんが、動いたので一旦これ以上の調査は保留。