Apa implikasi dari penggunaan direktif versi "go" dalam file modul go (go.mod)

11

Diberikan file go.mod berikut:

module foo

go 1.12

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

Apa yang go 1.12ditunjukkan? Apakah ini mencegah kompilasi foomodul terhadap versi Go lainnya? Atau itu hanya indikator dari fooversi Go yang direkomendasikan / diperlukan? Apakah ini arahan yang harus kami perbarui setiap kali versi baru go dirilis (setiap 6 bulan)?

mdwhatcott
sumber
3
Lihat golang.org/doc/go1.12#modules
Cerise Limón
1
Juga: golang.org/cmd/go/#hdr-The_go_mod_file : Versi bahasa yang diharapkan, yang diatur oleh arahan go, menentukan fitur bahasa mana yang tersedia saat menyusun modul. Fitur bahasa yang tersedia dalam versi itu akan tersedia untuk digunakan. Fitur bahasa yang dihapus di versi sebelumnya, atau ditambahkan di versi yang lebih baru, tidak akan tersedia. Perhatikan bahwa versi bahasa tidak memengaruhi tag build, yang ditentukan oleh rilis Go yang digunakan.
icza

Jawaban:

5

Ini harus dipertimbangkan di sepanjang baris Go Go versi minimum yang disyaratkan. Jika Anda membangun dengan versi Go yang sama atau lebih tinggi, semua harus baik-baik saja seperti yang dijanjikan oleh janji kompatibilitas Go 1 . Jika Anda membangun dengan versi yang lebih rendah akan ada pesan kesalahan jika membangun gagal:

Arahan pergi dalam file go.mod sekarang menunjukkan versi bahasa yang digunakan oleh file dalam modul itu. Ini akan diatur ke rilis saat ini (lanjut 1.12) jika tidak ada versi yang ada. Jika arahan untuk modul menentukan versi yang lebih baru dari toolchain yang digunakan, perintah go akan mencoba untuk membangun paket apa pun, dan akan mencatat ketidakcocokan hanya jika membangun itu gagal. Go 1.12 Catatan Rilis

TehSphinX
sumber