7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Go】VsCodeで環境構築手順

Last updated at Posted at 2021-12-04

はじめに

ブロックチェーンの勉強を行っていると、結構Go言語の話が出たり求人とかもGo言語が求められているので、今後必要になりそうだなーと思ったので早速Udemyで講座を購入し、勉強をはじめました!!
が、収録されている時からGoのバージョンが上がっていてgo getが使えなかったりして地味に環境構築に時間が取られたので、他の方にも参考になればと思い投稿することにしました。

Udemy 講座
現役シリコンバレーエンジニアが教えるGo入門+応用でビットコインのシストレFintechアプリの開発

環境

OS     : Mac
エディタ : VScode
Go     : 1.17.4

注※本記事ではVscodeのインストール方法は記載しておりません。

Goのインストール

Downloadsのサイトからパッケージをダウンロードして、インストールしました。

スクリーンショット 2021-12-04 19.41.48.png

バージョン確認してGoが無事にインストールできたことを確認!

go version
go version go1.17.4 darwin/amd64

Homebrewのインストール

(私は既にインストール済みだったので、実際にはやっていません)

Homebrewのサイトから記載されているインストール用のコマンドをコピーして、ターミナルに貼り付けて実行することでインストールできます。

下記スクリプトをターミナルで実行

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

実行時にパスワード聞かれたりしますが、ログインする時のパスワードを入れればよかったはずです。

バージョン確認してHomebrewが無事にインストールできたことを確認!

brew -v
Homebrew 3.3.6-72-g5096d6e
...

外部パッケージを取得

プログラムを書くときには外部パッケージを利用していくことになります。
そのためには、Gitが必要らしいので、上記でインストールしたHomebrewを使用してGitをインストールします。

brew install git

バージョン確認してGoが無事にインストールできたことを確認!

git --version
git version 2.24.3 (Apple Git-128)

godocを取得

外部パッケージが取得できることの確認としてgodocを試しに取得します。

godocとは?
Go言語は、godoc というコマンドがあります。
このコマンドを使用することでgolang.orgのパッケージのドキュメントをオフラインで閲覧することが出来ます。

講座ではgo get XXXで外部パッケージ取得していましたが、私がインストールしたGoではgo getが使用できなくなっており、なんだこれってなりました。。
調べてみると、go1.17からgo getは非推奨、代わりにgo installを使用してねーとのことでした。

上記の理由から以下のコマンドでgodocを取得しました。

go install golang.org/x/tools/cmd/godoc@latest

以下のコマンドでfmtのドキュメントを確認して、godocが無事に取得できたことを確認!

したいのですが、ここでも講座ではgodoc fmtでgodocを参照できるとのことでしたが、
仕様が変更されたみたいでgodoc fmtのコマンドを実行しても、以下のメッセージが表示され、godocが読み込めませんでした。

godoc fmt
-bash: godoc: command not found

調べてみると、godocのCLIモードはサポート終了されていることが原因らしく、
その代わりにgo docを使用してねーとのことみたいです。
なのでgo docを使用すると長文が表示されており、どうやら無事にgodocが取得できているみたいです。

go doc fmt
package fmt // import "fmt"

Package fmt implements formatted I/O with functions analogous to C's printf
and scanf. The format 'verbs' are derived from C's but are simpler.
...

参考
godocの代わりに go doc を推奨された件について

Vscodeをインストール

Vscodeのインストールについては、私は既にインストール済みであること、
インストール方法は、たくさん記事があるので本記事では割愛させていただきます。

VscodeでGoの環境を設定

まずはMarketplaceで拡張機能をインストールします。
「Go」と検索すれば一番上に表示されると思います。

スクリーンショット 2021-12-05 1.17.24.png

拡張機能「Go」がインストールできたら、開発に必要なライブラリ(デバッグ用のライブラリ等)は別途でインストールする必要があるらしいので、実施して行きます。

F1で、コマンドパレットを呼び出し、「>go Install」で検索
・「Go: Install/Update Tools」が表示されるのでクリック
スクリーンショット 2021-12-05 1.29.49.png

・必要なものを選択し、OKを押下し、インストール完了
 とりあえず私は全部にチェックを入れてインストールしました
スクリーンショット 2021-12-05 1.35.51.png

ここまで終われば一旦、設定は完了です。

Goでhello world

HelloWorld 用のファイルを作成。
どこでも良いと思いますが、私は以下に作成しました。

$GOPATH/src/hello_world.go

GOPATHの場所はgo envで確認できます。
hello_world.goの内容はこんな感じ

hello_world.go
package main

import "fmt"

func main() {
	fmt.Println("Hello world!")
}

F5でデバッグ実行を行うと、以下のエラーが起きて実行できませんでした。
なにかする度につまづいている気がします。

go: go.mod file not found in current directory or any parent directory; see 'go help modules' (exit status 1)

go.modがないんだなーというのはわかりました。
調べた結果modファイルを作ってあげればいいみたいです。
$\tiny{なんで必要とか細かいところまでは今後調べます!!}$

Vscodeでターミナルを開いてgo mod init [プロジェクト名]のコマンドを実行して作成します。

src $ go mod init hello_world
go: creating new go.mod: module hello_world
go: to add module requirements and sums:
        go mod tidy

go.modというファイルができました。
中身はこんな感じですね。依存関係が追加されていくとかどうとか・・

go.mod
module hello_world

go 1.17

go.modファイルが無事作成されたことが確認できたので、再度
F5でデバッグ実行を行うと,無事にHello world!が出力されました!
スクリーンショット 2021-12-05 2.18.13.png

参考
VSCode を使って Go のデバッガーが動くまでの設定をした
VSCodeでGoの開発ができるようにする
VSCodeでGo言語の開発環境を構築する

おわりに

Udemyの講座と違う部分もあり、少し時間を使いましたが無事にVsCodeで実行することが出来ました。
長くなってしまいましたが、誰かのお役に立てれば幸いです。
細かい部分の調査ができていなかったり、記載ミス等ありましたら優しく教えて欲しいです:relaxed:

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?