goモジュールファイル(go.mod)内で「go」バージョンディレクティブを使用するとどのような影響がありますか


11

次のgo.modファイルがあるとします。

module foo

go 1.12

require (
    github.com/bar/baz v1.0.0
    github.com/rat/cat v1.0.0
)

何をgo 1.12示していますか?foo他のバージョンのGoに対してモジュールをコンパイルするのを防ぎますか?それとも単にfooの推奨/必須Goバージョンのインジケータですか?これは、goの新しいバージョンがリリースされたとき(6か月ごと)に更新する必要があるディレクティブですか?



1
また、golang.org / cmd / go / #hdr-The_go_mod_file:goディレクティブで設定された予想される言語バージョンによって、モジュールのコンパイル時に使用できる言語機能が決まります。そのバージョンで使用可能な言語機能が使用できるようになります。以前のバージョンで削除された、または新しいバージョンで追加された言語機能は使用できなくなります。言語バージョンはビルドタグに影響を与えないことに注意してください。ビルドタグは、使用されているGoリリースによって決定されます。
icza

回答:


5

最低限必要なGoバージョンに沿って検討する必要があります。同じバージョンまたはそれ以上のバージョンのGoを使用してビルドする場合、Go 1互換性プロミスで約束されているとおり、すべて問題ありません。以前のバージョンでビルドする場合、ビルドが失敗するとエラーメッセージが表示されます。

go.modファイルのgoディレクティブは、そのモジュール内のファイルで使用される言語のバージョンを示すようになりました。既存のバージョンが存在しない場合は、現在のリリース(go 1.12)に設定されます。モジュールのgoディレクティブで、使用中のツールチェーンよりも新しいバージョンが指定されている場合、goコマンドはパッケージのビルドを試み、そのビルドが失敗した場合にのみ不一致を記録します。Go 1.12リリースノート

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.