2024/04からGo言語入門したメモ(Mac)
いまさらながらGolang始めてみた人のメモ
執筆時のバージョンは1.22
です
特徴
- 静的型付けのコンパイル言語
- コンパイルの後方互換性→Go1.0で書いたコードはGo1.xの間はビルドできる
- コンパイルと実行が高速
- 文法がシンプルで冗長な記述が不要、パフォーマンスの良いコードを書きやすい
- 標準ライブラリや周辺ツールが充実
- 並行プログラミングが簡単
- ガベージコレクションなどの自動メモリ管理
- シングルバイナリ・クロスコンパイル
- サーバーサイドが得意領域
- GolangとかGo言語と書かれるが、言語の正式名称は「Go」
- プログラミング言語として人気は高い
- TIOBEインデックス2024/04で6位 (Hall of Fame 2回)
まずは雰囲気をつかむ
A Tour of Go
最初はここから
p2で言語を選べるが、日本語版は2020頃から更新が止まっている
環境構築は後回しにしてWeb上で進める
なんか難しくてわからない、他の言語を学んだことがない、ポインタって何?
という人はこの辺↓が参考になるかも
Go offline(と、環境変数やGOPATHについて)
p3にある「Go offline」はオプションなので飛ばした方が良い
(動かしたい人は↓)
ローカルでGo Tourを動かす方法が書いてあるが、インストールや実行方法が更新されており
英語版と差分がある(そして英語版でも記述がちょっと古い)
go install golang.org/x/website/tour@latest
$GOPATH/bin
にインストールされるとあるが1.11以降は管理の方法が変更になっている
(さらに1.16以降でデフォルト設定の変更が入っていたりする
- 1.10以前:標準ライブラリ以外のパッケージは環境変数
GOPATH
以下で管理 - 1.11以降:リポジトリのバージョンごとで管理
Goで利用される環境変数は以下で確認できる
$ go env
:
GOPATH='/Users/$USER/.asdf/installs/golang/1.22.2/packages'
実行
cd /Users/$USER/.asdf/installs/golang/1.22.2/packages/bin
./tour
参考
環境構築
公式のインストール方法はこちら
標準でバージョン管理する機能もあるようです
asdfでのインストール
Golangのプラグイン追加
$ asdf plugin add golang
$ asdf install golang latest
インストールされた最新バージョンを確認してglobalに登録
$ asdf list golang
*1.22.2
$ asdf global golang 1.22.2
設定されているバージョン確認
$ asdf current golang
golang 1.22.2 /Users/<user>/.tool-versions
バージョン確認
$ go version
go version go1.22.2 darwin/arm64
IDE
普通のテキストエディタを使っても良いですが、IDEを使うと警告など出してくれます
GoLand / IntelliJ
有料:30日フリートライアル
VSCode
無料
Homebrew Caskで入れる場合は↓
brew install visual-studio-code --cask
.go
ファイルを開くとプラグインのインストール画面が出るので入れます
↑プラグインのページからもインストール可能
View the tools documentation for a complete list of tools the VS Code Go extension depends on. You can install additional tools and update them by using "Go: Install/Update Tools".
必要な拡張機能は都度インストールの案内が出ますが、コマンドパレット(Cmd+Shit+p)の「Go: Install/Update Tools」でまとめてインストールできます
次に読むもの
ビルドと実行方法
- ディレクトリを作成したら、↓で必要なファイルを作る
モジュールパスexample/user/hello
の部分は何でも良い
go mod init example/user/hello
モジュールの命名については↓
-
コード作成
-
外部パッケージを使う(インポートした)場合、↓でモジュールをダウンロードする
go mod tidy
- 実行
go run .
(補足)
コンパイルだけする方法やインストールするコマンドがあるので↓参照
テストの書き方
(参考)
公式チュートリアル
※Tutorial: Get started with Go
から初めてページ下部右下のリンクから進めないと出てこないページがあったり、リンクに繋がっておらずトップページからしかいけないページがあり若干読みにくいです
以下のような内容も取り扱っています
- MySQL(DBMS)のアクセス
- GinによるREST API作成
- Fuzzing(問題の起きそうなデータをたくさん作ってテスト)
- 脆弱性診断
その他、補足となりそうな資料などまとめてます↓
Discussion