参考リンク色々
The Go Programming Language
Golang公式トップ
Packages – The Go Programming Language
Golangパッケージの検索が可能です。
Documentation – The Go Programming Language
Golangドキュメントのトップページ。開発に役立つリンクがあります。
The Go Playground
Webブラウザ上でGolangのコードを試せます
A Tour of Go
Webブラウザ上でGolangの基本を学べます。 日本語版もあります。
Effective Go – The Go Programming Language
Golang特有の表現や慣習的な使い方がサンプル付きで記載されています。
コミュニティ
Slack Community For Gophers
GophersのためのSlackコミュニティ。#japanチャンネルでは日本人の方が多くいて日本語でやりとりできます。
開発ツール
VSCode
無料です。Goエクステンション追加で快適にGolangを開発できます。
GoLand
GolangのIDE。有料ですが、補完機能が強力で生産性を求めるなら利用すべきです。
GOROOT
- 基本設定しなくて良い
- Go言語がインストールされている場所
- インストール環境によって場所は異なる
- Macであれば
/usr/local/go
- goのバイナリファイルは
$GOROOT/bin/go
GOPATH
- Go言語のワークスペース
- Goの古いバージョンでは設定する必要があった
- デフォルト(設定されていない場合)は
$HOME/go
になる - 自身のプログラムは
$GOPATH/src/github.com/user/repo
のように作成するのが通例 - 外部パッケージがインストールされる場所でもある
参考:https://golang.org/doc/gopath_code.html#GOPATH
$GOPATH
ディレクトリにはsrc
,pkg
,bin
の3つのディレクトリがあります。
- src にはソースコードを保存します(例えば:.go .c .h .s等)
- pkg にはコンパイル後に生成されるファイル(例えば:.a)
- bin にはコンパイル後に生成される実行可能ファイル(このまま $PATH 変数に加えてもかまいません。もしいくつもgopathがある場合は、
${GOPATH//://bin:}/bin
を使って全てのbinディレクトリを追加してください)
go get
外部パッケージをインストールするコマンドです。実行するとソースコードを$GOPATH/go/src
ダウンロードします。この時に依存感関係のあるパッケージが一緒にダウンロードされます。また、$GOPATH/go/bin
に実行ファイルが生成されます。
オプションu
をつけて依存関係とそのすべての依存関係を最新バージョンにアップグレードするインストールする利用方法が多いです。
例:
$ go get -u github.com/cosmtrek/air
Go Modules
インポートするパッケージのバージョンを管理してくれます。
参考:https://github.com/golang/go/wiki/Modules
チームで開発する場合は設定しておくと安心です。
使い方
$ cd ~/go/src/github.com/name/app
$ go mod init
go.mod
ファイルが作成されます。
go.mod:
module github.com/selegee/app2
go 1.15
ビルドすると依存パッケージのバージョンがgo.mod
ファイルに追記されます。
go.mod:
go 1.15
require (
github.com/labstack/echo v3.3.10+incompatible
github.com/labstack/gommon v0.3.0 // indirect
golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897 // indirect
gorm.io/driver/mysql v1.0.3
gorm.io/gorm v1.20.5
)
go.sumファイルも作成されます。
go.sumは依存モジュールのチェックサムを管理します。
- go.sumは特定のモジュールバージョンのコンテンツの予想される暗号チェックサムが含まれています。
- 誰かがリポジトリのクローンを作成し、goコマンドを使用して依存関係をダウンロードした場合、ダウンロードした依存関係のコピーとの対応するエントリの間に不一致があると、エラーが発生します。
参考: https://syfm.hatenablog.com/entry/2019/08/10/170730
ホットリロード
Go言語にはデフォルトでホットリロードの機能はありません。
Go言語を開発する場合はホットリロードの外部パッケージをインストールをしておくと便利です。
airを用いたホットリロードの設定方法は以下に記載しています。