Ý nghĩa của việc sử dụng chỉ thị phiên bản của go go trong một tệp mô-đun đi (go.mod)


11

Cho tệp go.mod sau:

module foo

go 1.12

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

Những gì go 1.12chỉ ra? Nó có ngăn chặn việc biên dịch foomô-đun với bất kỳ phiên bản Go nào khác không? Hay nó chỉ đơn giản là một chỉ báo của foophiên bản Go được đề xuất / yêu cầu? Đây có phải là một chỉ thị mà chúng ta nên cập nhật bất cứ khi nào một phiên bản mới của go được phát hành (cứ sau 6 tháng)?



1
Ngoài ra: golang.org/cmd/go/#hdr-The_go_mod_file : Phiên bản ngôn ngữ dự kiến, được thiết lập bởi chỉ thị go, xác định các tính năng ngôn ngữ nào khả dụng khi biên dịch mô-đun. Các tính năng ngôn ngữ có sẵn trong phiên bản đó sẽ có sẵn để sử dụng. Các tính năng ngôn ngữ bị xóa trong các phiên bản trước hoặc được thêm vào trong các phiên bản sau sẽ không khả dụng. Lưu ý rằng phiên bản ngôn ngữ không ảnh hưởng đến thẻ xây dựng, được xác định bởi bản phát hành Go đang được sử dụng.
icza

Câu trả lời:


5

Nó nên được xem xét dọc theo dòng của Phiên bản Go yêu cầu tối thiểu. Nếu bạn xây dựng với phiên bản tương tự hoặc cao hơn của Go, tất cả sẽ ổn như đã hứa với lời hứa tương thích Go 1 . Nếu bạn xây dựng với phiên bản thấp hơn, sẽ có thông báo lỗi nếu quá trình xây dựng không thành công:

Lệnh go trong tệp go.mod hiện chỉ ra phiên bản ngôn ngữ được sử dụng bởi các tệp trong mô-đun đó. Nó sẽ được đặt thành bản phát hành hiện tại (đi 1.12) nếu không có phiên bản hiện tại. Nếu chỉ thị go cho một mô-đun chỉ định một phiên bản mới hơn so với toolchain đang sử dụng, lệnh go sẽ cố gắng xây dựng các gói bất kể và sẽ chỉ lưu ý sự không phù hợp nếu quá trình xây dựng đó thất bại. Đi 1.12 Ghi chú phát hành

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.