以下のキーワードをあんまり理解できていなかったので調べてまとめた。(随時調べて更新していく)
- コンパイルとビルドの違い
- Golangのパッケージとモジュールとライブラリの違い
- $GOPATH/go/配下のsrc,pkg,binの違い()
コンパイルとビルドの違い
ここによると
-
コンパイル
= ソースコードをオブジェクトコードに変換すること -
リンク
= オブジェクトコードをくっつけて一つのバイナリコードにする -
ビルド
= コンパイル + リンク
パッケージとモジュールとライブラリの違い
- 同一パッケージのファイルは同一フォルダ
$GOPATH/src/(package名)/
などに含める(1つのディレクトリには1種類のパッケージ定義のみ許容される)。 - 同じパッケージに属するファイルは互いに丸見え。これらはまとめてコンパイルされる。
- main packageに属するファイルに関しては
$GOPATH/src/
配下に直置き。複数ある場合はgo build *.go
でビルド 自分のアプリを作る場合は
go mod init (モジュール名)
で始める。ライブラリは(main packageを含まない)packageの集まり。ビルドして一つのバイナリになる。
パッケージのインポート
- $GOPATH/src/配下のパッケージは
import (package名)
で。 - 同プロジェクト内のパッケージは
import (module名).(package名)
で。 - スクリプト内でパッケージ名を省略して関数や構造体を呼び出すには
. import (package名)
で。