อะไรคือความหมายของการใช้คำสั่ง“ go” version ภายในไฟล์โมดูล go (go.mod)


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 ของที่แนะนำ / จำเป็น? นี่เป็นคำสั่งที่เราควรอัปเดตทุกครั้งที่มีการปล่อยเวอร์ชั่นใหม่หรือไม่ (ทุกๆ 6 เดือน)?



1
นอกจากนี้: golang.org/cmd/go/#hdr-The_go_mod_file : เวอร์ชันภาษาที่คาดไว้ซึ่งกำหนดโดยคำสั่ง go กำหนดคุณสมบัติของภาษาที่จะใช้เมื่อรวบรวมโมดูล คุณสมบัติภาษาที่มีอยู่ในรุ่นนั้นจะสามารถใช้งานได้ คุณสมบัติภาษาที่นำออกในรุ่นก่อนหน้าหรือเพิ่มในรุ่นภายหลังจะไม่สามารถใช้ได้ โปรดทราบว่าเวอร์ชันภาษาจะไม่ส่งผลต่อแท็กบิลด์ซึ่งพิจารณาจากการเปิดตัว Go ที่กำลังใช้อยู่
icza

คำตอบ:


5

มันควรได้รับการพิจารณาตามสายของรุ่น Go ต่ำสุดที่ต้องการ ถ้าคุณสร้างแบบเดียวกับที่หรือรุ่นที่สูงขึ้นของการไปทั้งหมดควรจะปรับตามสัญญาโดยไป 1 เข้ากันได้สัญญา หากคุณสร้างด้วยเวอร์ชันที่ต่ำกว่าจะมีข้อความแสดงข้อผิดพลาดหากบิลด์ล้มเหลว:

ตอนนี้คำสั่ง go ในไฟล์ go.mod จะระบุเวอร์ชันของภาษาที่ใช้โดยไฟล์ภายในโมดูลนั้น มันจะถูกตั้งค่าเป็นรุ่นปัจจุบัน (ไป 1.12) หากไม่มีรุ่นที่มีอยู่ หากคำสั่ง go สำหรับโมดูลระบุเวอร์ชันที่ใหม่กว่า Toolchain ที่ใช้งานอยู่คำสั่ง go จะพยายามสร้างแพ็กเกจโดยไม่คำนึงถึงและจะบันทึกการไม่ตรงกันหากบิลด์นั้นล้มเหลว 1.12 บันทึกย่อประจำรุ่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.