GoLang全然わからん ~インストール編~
はじめに
全くGoLangを知らん私が、Windows 11 + WSL2(Ubuntu 21.04) + Visual Studio Codeで勉強していくログです。
記事一覧
- インストール編 (今回の記事)
- httpレスポンス&リクエスト編
- Docker build編
やったこと
goのインストール
とりあえずWindows TerminalでWSL2(Ubuntu)を開いて「go」と打つ。
$ go Command ‘go’ not found, but can be installed with: sudo apt install golang-go # version 2:1.13~1ubuntu2, or sudo apt install gccgo-go # version 2:1.13~1ubuntu2
なるほど!apt install goでいいのかー!
と思ってVersionを見ると、1.13とか古そう。Downloadサイトを見ると、1.18.1が本日時点の最新らしい。
以下の記事を参考にtarballからインストールを行いましたよ。
ubuntu系Linuxの方へGoのインストールはaptはダメよ
$ wget https://go.dev/dl/go1.18.1.linux-amd64.tar.gz $ sudo tar -C /usr/local -xzf go1.18.1.linux-amd64.tar.gz $ echo ’export PATH=$PATH:/usr/local/go/bin’ » ~/.profile $ source .profile $ go version $ go version go1.18.1 linux/amd64
よしばっちり。これで私もGopherだ。
Gopherと聞くと、どうしてもこっちを連想してしまう。
早速Hello world
適当なサイトからHello World的なソースを参考にnotepad.exeで作成して実行してみる。
$ cat hello.go
package main
import "fmt"
func main() {
fmt.Printf("Hello World\n")
}
$ go run hello.go
Hello World
実行ファイルにしてみよう
コンパイルしてみる
$ ls hello.go $ go build hello.go $ ls -l total 1736 -rwxr-xr-x 1 yotan yotan 1771078 Apr 25 09:49 hello -rw-r–r– 1 yotan yotan 74 Apr 25 09:37 hello.go $ ./hello Hello World
完璧ですね。なんか、実行ファイルのサイズが大きい気もしますが、今は気にしないでおこう。
vscodeで編集
続いてvscodeにGoLangの拡張機能を入れてみよう。
多分これ。
先ほどのhello.goを開くと、「go-outline」「gopls」が無いぞって言われますね。なんだろうこれ。とりあえず今は入れておきましょう。
ホームディレクトリ(今回は /home/yotan)配下にgoディレクトリが作られて、色々と中にファイルやディレクトリが作成されました。
ホームディレクトリ配下に実行ファイルとかインストールされるの嫌いなんですが、まずはこのまま先に進むことにします。
$ ls -l ~/go/*
/home/yotan/go/bin:
total 27944
-rwxr-xr-x 1 yotan yotan 3201227 Apr 25 09:54 go-outline
-rwxr-xr-x 1 yotan yotan 25408808 Apr 25 09:55 gopls
/home/yotan/go/pkg:
total 8
drwxr-xr-x 7 yotan yotan 4096 Apr 25 09:54 mod
drwxr-xr-x 3 yotan yotan 4096 Apr 25 09:54 sumdb
とりあえず、vscode上で私のhello.goが美しく表示され、ターミナルからの実行もできるようになりました。よきかな。
デバッグしてみよう
vscode上で「実行とデバッグ」をやってみると、今度はdlvが無いよ?と言われる。とりあえずinstall allして先に進む。
gccが無いよって叱られる
以下のコマンドでgcc一式をインストールだ。
$ sudo apt install gcc
今度はOKだった。
再度「実行とデバッグ」をクリックすると。。。
今度はビルドエラー。なんでじゃ。
少し調べたところ、モジュールとして公開するための定義「go.mod」を作成する必要があるみたい。とりあえず公開プロジェクトではないので適当に記述してみる。
$ cat go.mod
module myproject/mylibrary
go 1.18
よしよし、今度はデバッガー上でステップ実行もできたぞ。
今回のまとめ
- C#やPythonでは初期構築(デバッグできるまで)に時間がかかって挫折したが、GoLangは比較的スムーズに構築できたと思う
- ~/go配下にインストールされるgopls, go-outline, dlvなど良く分かっていないのでこれから調査
- go.modについてまだ良く判らないので勉強する
- 今後、基本的な文法を学び、業務でも使える検証用プログラムとかサクっと作れるようになればいいな(httpリクエスト、レスポンス系が中心か)