概要
前回は実際に動かしてみて挙動を確認してみました。今回はそのロジックを理解します。
GoのToolchainはv1.21以降で導入された機能で、次のような課題を解決するために生まれました。
- go.modに記載のバージョンは直感的じゃない
- 実際にビルドに使われるのはローカルにインストールされているGo
- ビルドでコケたらgo.modに記載のバージョンで
module requires Go 1.xx
と言ってくるが、実際に必要な最低バージョンの保証ではない- もしかしたらもう少し低いバージョンでもBuildできる可能性もある
- Go 1.19.4でバグが入ったが、Go 1.19.3, Go 1.19.5 であればBuildできる状態。けれどそれをgo.modで表現できない
またGoでは後方互換性が保証されてはいるものの、複数のプロジェクトにまたがっているとプロジェクトによって使うGoバージョンが決まっていたりするため、何だかんだ複数のバージョン管理ができると良かったりします。
環境
- Go v1.21以上
- macOS v15.1.1