Mỗi Go module được định nghĩa bởi một tệp go.mod mô tả các thuộc tính của module, bao gồm các phụ thuộc của nó vào những module khác và vào các phiên bản Go.
Các thuộc tính này bao gồm:
- module path của module hiện tại. Đây phải là một vị trí mà từ đó các công cụ Go có thể tải module xuống, chẳng hạn vị trí repository chứa mã nguồn của module. Nó đóng vai trò là định danh duy nhất, khi kết hợp với số phiên bản của module. Nó cũng là tiền tố của package path cho mọi package trong module. Để biết thêm về cách Go định vị module, xem Tham chiếu Go Modules.
- phiên bản Go tối thiểu mà module hiện tại yêu cầu.
- Danh sách các phiên bản tối thiểu của những module được yêu cầu bởi module hiện tại.
- Tuỳ chọn, các chỉ dẫn để thay thế (replace) một module được yêu cầu bằng một phiên bản module khác hoặc một thư mục cục bộ, để loại trừ (exclude) một phiên bản cụ thể của module được yêu cầu, hoặc để bỏ qua (ignore) những thư mục cụ thể bên trong module khi so khớp các mẫu package.
Go sinh ra tệp go.mod khi bạn chạy câu lệnh go mod init. Ví dụ sau tạo một tệp go.mod, đặt module path của module là example/mymodule:
$ go mod init example/mymodule
Dùng các câu lệnh go để quản lý phụ thuộc. Những câu lệnh này bảo đảm rằng các yêu cầu được mô tả trong tệp go.mod của bạn luôn nhất quán và nội dung tệp go.mod là hợp lệ. Chúng bao gồm các câu lệnh go get, go mod tidy và go mod edit.
Để tham chiếu về các câu lệnh go, xem Câu lệnh go. Bạn có thể nhận trợ giúp từ dòng lệnh bằng cách gõ go help tên-câu-lệnh, ví dụ như go help mod tidy.
Xem thêm
- Các công cụ Go sẽ thay đổi tệp go.mod của bạn khi bạn dùng chúng để quản lý phụ thuộc. Để biết thêm, xem Quản lý phụ thuộc.
- Để biết thêm chi tiết và ràng buộc liên quan đến tệp go.mod, xem Tham chiếu Go modules.
Ví dụ
Một tệp go.mod bao gồm các directive như trong ví dụ sau. Chúng được mô tả ở những phần khác trong chủ đề này.
module example.com/mymodule
go 1.14
require (
example.com/othermodule v1.2.3
example.com/thismodule v1.2.3
example.com/thatmodule v1.2.3
)
replace example.com/thatmodule => ../thatmodule
exclude example.com/thismodule v1.3.0
module
Khai báo module path của module, tức là định danh duy nhất của module (khi kết hợp với số phiên bản module). Module path trở thành tiền tố import cho mọi package mà module chứa.
Để biết thêm, xem directive module trong Tham chiếu Go Modules.
Cú pháp
module module-path
- module-path
- Module path của module, thường là vị trí repository mà từ đó các công cụ Go có thể tải module xuống. Với các phiên bản module v2 trở lên, giá trị này phải kết thúc bằng số phiên bản major, chẳng hạn
/v2.
Ví dụ
Các ví dụ sau thay example.com cho một tên miền repository mà từ đó module có thể được tải xuống.
-
Khai báo module cho module v0 hoặc v1:
module example.com/mymodule -
Module path cho module v2:
module example.com/mymodule/v2
Ghi chú
Module path phải định danh module của bạn một cách duy nhất. Với hầu hết module, đường dẫn này là một URL nơi câu lệnh go có thể tìm thấy mã nguồn (hoặc một chuyển hướng tới mã nguồn). Với những module sẽ không bao giờ được tải xuống trực tiếp, module path có thể chỉ là một cái tên nào đó bạn kiểm soát và bảo đảm tính duy nhất. Tiền tố example/ cũng được dành riêng để dùng trong các ví dụ như thế này.
Để biết thêm chi tiết, xem Quản lý phụ thuộc.
Trên thực tế, module path thường là tên miền repository chứa mã nguồn module cùng đường dẫn tới mã nguồn module bên trong repository đó. Câu lệnh go dựa vào dạng này khi tải các phiên bản module xuống để giải quyết phụ thuộc thay cho người dùng module.
Ngay cả khi ban đầu bạn không có ý định để mã nguồn khác sử dụng module của mình, dùng đường dẫn repository của nó vẫn là một thực hành tốt giúp bạn tránh phải đổi tên module nếu sau này bạn công bố nó.
Nếu ban đầu bạn chưa biết vị trí repository cuối cùng của module, hãy cân nhắc tạm dùng một tên thay thế an toàn, chẳng hạn tên một tên miền bạn sở hữu hoặc một cái tên bạn kiểm soát (chẳng hạn tên công ty của bạn), kèm theo một đường dẫn dựa trên tên module hoặc thư mục mã nguồn. Để biết thêm, xem Quản lý phụ thuộc.
Ví dụ, nếu bạn đang phát triển trong thư mục stringtools, module path tạm thời của bạn có thể là <company-name>/stringtools, như trong ví dụ sau, trong đó company-name là tên công ty của bạn:
go mod init <company-name>/stringtools
go
Cho biết module được viết với giả định về ngữ nghĩa của phiên bản Go mà directive này chỉ định.
Để biết thêm, xem directive go trong Tham chiếu Go Modules.
Cú pháp
go minimum-go-version
- minimum-go-version
- Phiên bản Go tối thiểu cần có để biên dịch các package trong module này.
Ví dụ
-
Module phải chạy trên Go phiên bản 1.14 trở lên:
go 1.14
Ghi chú
Directive go đặt phiên bản Go tối thiểu cần có để dùng module này. Trước Go 1.21, directive này chỉ mang tính khuyến nghị; nay nó là một yêu cầu bắt buộc: các Go toolchain sẽ từ chối dùng những module khai báo phiên bản Go mới hơn.
Directive go là một đầu vào cho việc chọn Go toolchain nào sẽ chạy. Xem “Go toolchain” để biết chi tiết.
Directive go ảnh hưởng đến việc sử dụng các tính năng ngôn ngữ mới:
- Với các package bên trong module, compiler từ chối việc dùng những tính năng ngôn ngữ được giới thiệu sau phiên bản mà directive
gochỉ định. Ví dụ, nếu một module có directivego 1.12, các package của nó không được dùng các hằng số dạng số như1_000_000, vốn được giới thiệu trong Go 1.13. - Nếu một phiên bản Go cũ hơn build một trong các package của module và gặp lỗi biên dịch, thông báo lỗi sẽ nêu rằng module được viết cho một phiên bản Go mới hơn. Ví dụ, giả sử một module có
go 1.13và một package dùng hằng số dạng số1_000_000. Nếu package đó được build bằng Go 1.12, compiler sẽ nêu rằng mã nguồn được viết cho Go 1.13.
Directive go cũng ảnh hưởng đến hành vi của câu lệnh go:
- Từ
go 1.14trở lên, vendoring tự động có thể được bật. Nếu tệpvendor/modules.txttồn tại và nhất quán vớigo.mod, bạn không cần dùng cờ-mod=vendormột cách tường minh. - Từ
go 1.16trở lên, mẫu packageallchỉ khớp với những package được import bắc cầu bởi các package và test trong main module. Đây chính là tập package đượcgo mod vendorgiữ lại kể từ khi module được giới thiệu. Ở các phiên bản thấp hơn,allcòn bao gồm cả test của những package được import bởi các package trong main module, test của những package đó, và cứ thế tiếp tục. - Từ
go 1.17trở lên:- Tệp
go.modbao gồm một directiverequiretường minh cho mỗi module cung cấp bất kỳ package nào được import bắc cầu bởi một package hoặc test trong main module. (Ởgo 1.16trở xuống, một phụ thuộc gián tiếp chỉ được đưa vào nếu lựa chọn phiên bản tối thiểu sẽ chọn một phiên bản khác.) Thông tin bổ sung này cho phép tỉa gọn đồ thị module và nạp module lười. - Vì có thể có nhiều phụ thuộc
// indirecthơn so với các phiên bảngotrước đó, các phụ thuộc gián tiếp được ghi lại trong một khối riêng bên trong tệpgo.mod. go mod vendorbỏ qua các tệpgo.modvàgo.sumcho những phụ thuộc đã vendor. (Điều đó cho phép các lần gọi câu lệnhgobên trong các thư mục con củavendorxác định đúng main module.)go mod vendorghi lại phiên bảngotừ tệpgo.modcủa mỗi phụ thuộc vàovendor/modules.txt.
- Tệp
- Từ
go 1.21trở lên:- Dòng
gokhai báo phiên bản Go tối thiểu bắt buộc để dùng với module này. - Dòng
gophải lớn hơn hoặc bằng dònggocủa mọi phụ thuộc. - Câu lệnh
gokhông còn cố gắng duy trì tương thích với phiên bản Go cũ hơn trước đó. - Câu lệnh
gocẩn thận hơn trong việc giữ checksum của các tệpgo.modtrong tệpgo.sum.
- Dòng
Một tệp go.mod có thể chứa tối đa một directive go. Hầu hết câu lệnh sẽ thêm một directive go với phiên bản Go hiện tại nếu chưa có.
toolchain
Khai báo một Go toolchain được đề xuất để dùng với module này. Chỉ có hiệu lực khi module là main module và toolchain mặc định cũ hơn toolchain được đề xuất.
Để biết thêm, xem “Go toolchain” và directive toolchain trong Tham chiếu Go Modules.
Cú pháp
toolchain toolchain-name
- toolchain-name
- Tên của Go toolchain được đề xuất. Tên toolchain chuẩn có dạng
goVcho phiên bản Go V, chẳng hạngo1.21.0vàgo1.18rc1. Giá trị đặc biệtdefaulttắt việc tự động chuyển đổi toolchain.
Ví dụ
-
Đề xuất dùng Go 1.21.0 trở lên:
toolchain go1.21.0
Ghi chú
Xem “Go toolchain” để biết chi tiết về cách dòng toolchain ảnh hưởng đến việc chọn Go toolchain.
godebug
Cho biết các thiết lập GODEBUG mặc định sẽ được áp dụng cho các package main của module này. Chúng ghi đè mọi giá trị mặc định của toolchain, và bị ghi đè bởi các dòng //go:debug tường minh trong package main.
Cú pháp
godebug debug-key=debug-value
- debug-key
- Tên của thiết lập sẽ được áp dụng. Danh sách các thiết lập và phiên bản mà chúng được giới thiệu có thể tìm thấy tại Lịch sử GODEBUG.
- debug-value
- Giá trị cung cấp cho thiết lập. Nếu không có quy định khác,
0để tắt và1để bật hành vi được nêu tên.
Ví dụ
-
Dùng hành vi
asynctimerchan=0mới của 1.23:godebug asynctimerchan=0 -
Dùng các GODEBUG mặc định từ Go 1.21, nhưng giữ hành vi
panicnil=1cũ:godebug ( default=go1.21 panicnil=1)
Ghi chú
Các thiết lập GODEBUG chỉ áp dụng cho việc build các package main và các tệp nhị phân test trong module hiện tại. Chúng không có tác dụng khi một module được dùng làm phụ thuộc.
Xem “Go, Khả năng tương thích ngược, và GODEBUG” để biết chi tiết về khả năng tương thích ngược.
require
Khai báo một module là phụ thuộc của module hiện tại, chỉ định phiên bản tối thiểu của module được yêu cầu.
Để biết thêm, xem directive require trong Tham chiếu Go Modules.
Cú pháp
require module-path module-version
- module-path
- Module path của module, thường là sự ghép nối giữa tên miền repository chứa mã nguồn module và tên module. Với các phiên bản module v2 trở lên, giá trị này phải kết thúc bằng số phiên bản major, chẳng hạn
/v2. - module-version
- Phiên bản của module. Đây có thể là số phiên bản của một bản phát hành, chẳng hạn v1.2.3, hoặc một số pseudo-version do Go sinh ra, chẳng hạn v0.0.0-20200921210052-fa0125251cc4.
Ví dụ
-
Yêu cầu phiên bản đã phát hành v1.2.3:
require example.com/othermodule v1.2.3 -
Yêu cầu một phiên bản chưa được gắn tag trong repository bằng cách dùng số pseudo-version do các công cụ Go sinh ra:
require example.com/othermodule v0.0.0-20200921210052-fa0125251cc4
Ghi chú
Khi bạn chạy một câu lệnh go như go get, Go chèn các directive require cho mỗi module chứa các package được import. Khi một module chưa được gắn tag trong repository của nó, Go gán cho nó một số pseudo-version mà nó sinh ra khi bạn chạy câu lệnh.
Bạn có thể khiến Go yêu cầu một module từ một vị trí khác với repository của nó bằng cách dùng directive replace.
Để biết thêm về số phiên bản, xem Đánh số phiên bản module.
Để biết thêm về quản lý phụ thuộc, xem những phần sau:
- Thêm một phụ thuộc
- Lấy một phiên bản phụ thuộc cụ thể
- Khám phá các bản cập nhật có sẵn
- Nâng cấp hoặc hạ cấp một phụ thuộc
- Đồng bộ các phụ thuộc trong mã nguồn của bạn
tool
Thêm một package làm phụ thuộc của module hiện tại, và khiến nó có thể chạy được bằng go tool khi thư mục làm việc hiện tại nằm trong module này.
Cú pháp
tool package-path
- package-path
- Package path của công cụ, là sự ghép nối giữa module chứa công cụ và đường dẫn (có thể rỗng) tới package hiện thực công cụ đó bên trong module.
Ví dụ
-
Khai báo một công cụ được hiện thực trong module hiện tại:
module example.com/mymoduletool example.com/mymodule/cmd/mytool -
Khai báo một công cụ được hiện thực trong một module riêng:
module example.com/mymoduletool example.com/atool/cmd/atoolrequire example.com/atool v1.2.3
Ghi chú
Bạn có thể dùng go tool để chạy các công cụ được khai báo trong module của mình bằng package path đầy đủ, hoặc nếu không có sự nhập nhằng thì bằng đoạn đường dẫn cuối cùng. Trong ví dụ đầu tiên ở trên, bạn có thể chạy go tool mytool hoặc go tool example.com/mymodule/cmd/mytool.
Ở chế độ workspace, bạn có thể dùng go tool để chạy một công cụ được khai báo trong bất kỳ module nào của workspace.
Các công cụ được build bằng cùng đồ thị module như chính module đó. Cần có một directive require để chọn phiên bản của module hiện thực công cụ. Mọi directive replace hay directive exclude cũng áp dụng cho công cụ và các phụ thuộc của nó.
Để biết thêm thông tin, xem Phụ thuộc công cụ.
replace
Thay thế nội dung của một module ở một phiên bản cụ thể (hoặc mọi phiên bản) bằng một phiên bản module khác hoặc bằng một thư mục cục bộ. Các công cụ Go sẽ dùng đường dẫn thay thế khi giải quyết phụ thuộc.
Để biết thêm, xem directive replace trong Tham chiếu Go Modules.
Cú pháp
replace module-path [module-version] => replacement-path [replacement-version]
- module-path
- Module path của module cần thay thế.
- module-version
- Tuỳ chọn. Một phiên bản cụ thể cần thay thế. Nếu bỏ qua số phiên bản này, mọi phiên bản của module sẽ được thay thế bằng nội dung ở phía bên phải mũi tên.
- replacement-path
- Đường dẫn mà Go nên tìm module được yêu cầu. Đây có thể là một module path hoặc một đường dẫn tới thư mục trên hệ thống tệp cục bộ đối với module thay thế. Nếu đây là một module path, bạn phải chỉ định giá trị replacement-version. Nếu đây là một đường dẫn cục bộ, bạn không được dùng giá trị replacement-version.
- replacement-version
- Phiên bản của module thay thế. Chỉ được chỉ định phiên bản thay thế nếu replacement-path là một module path (không phải thư mục cục bộ).
Ví dụ
-
Thay thế bằng một fork của repository module
Trong ví dụ sau, mọi phiên bản của example.com/othermodule đều được thay thế bằng fork được chỉ định của mã nguồn nó.
require example.com/othermodule v1.2.3 replace example.com/othermodule => example.com/myfork/othermodule v1.2.3-fixedKhi bạn thay một module path bằng một module path khác, đừng đổi các câu lệnh import cho các package trong module bạn đang thay thế.
Để biết thêm về việc dùng bản fork của mã nguồn module, xem Yêu cầu mã nguồn module ngoài từ fork repository của chính bạn.
-
Thay thế bằng một số phiên bản khác
Ví dụ sau chỉ định rằng phiên bản v1.2.3 nên được dùng thay cho mọi phiên bản khác của module.
require example.com/othermodule v1.2.2 replace example.com/othermodule => example.com/othermodule v1.2.3Ví dụ sau thay thế phiên bản module v1.2.5 bằng phiên bản v1.2.3 của cùng module đó.
replace example.com/othermodule v1.2.5 => example.com/othermodule v1.2.3 -
Thay thế bằng mã nguồn cục bộ
Ví dụ sau chỉ định rằng một thư mục cục bộ nên được dùng làm bản thay thế cho mọi phiên bản của module.
require example.com/othermodule v1.2.3 replace example.com/othermodule => ../othermoduleVí dụ sau chỉ định rằng một thư mục cục bộ nên được dùng làm bản thay thế chỉ cho v1.2.5.
require example.com/othermodule v1.2.5 replace example.com/othermodule v1.2.5 => ../othermoduleĐể biết thêm về việc dùng bản sao cục bộ của mã nguồn module, xem Yêu cầu mã nguồn module trong một thư mục cục bộ.
Ghi chú
Dùng directive replace để tạm thay một giá trị module path bằng một giá trị khác khi bạn muốn Go dùng đường dẫn kia để tìm mã nguồn của module. Điều này có tác dụng chuyển hướng việc tìm kiếm module của Go tới vị trí thay thế. Bạn không cần đổi các import path của package để dùng đường dẫn thay thế.
Dùng các directive exclude và replace để kiểm soát việc giải quyết phụ thuộc lúc build khi build module hiện tại. Các directive này bị bỏ qua trong những module phụ thuộc vào module hiện tại.
Directive replace có thể hữu ích trong những tình huống như sau:
- Bạn đang phát triển một module mới mà mã nguồn chưa nằm trong repository. Bạn muốn kiểm thử với các client bằng một phiên bản cục bộ.
- Bạn đã phát hiện một vấn đề với một phụ thuộc, đã clone repository của phụ thuộc đó, và bạn đang kiểm thử bản sửa lỗi với repository cục bộ.
Lưu ý rằng chỉ riêng một directive replace không thêm một module vào đồ thị module. Cũng cần có một directive require tham chiếu tới phiên bản module đã bị thay thế, hoặc trong tệp go.mod của main module hoặc trong tệp go.mod của một phụ thuộc. Nếu bạn không có một phiên bản cụ thể để thay thế, bạn có thể dùng một phiên bản giả, như trong ví dụ bên dưới. Lưu ý rằng điều này sẽ làm hỏng những module phụ thuộc vào module của bạn, vì các directive replace chỉ được áp dụng trong main module.
require example.com/mod v0.0.0-replace
replace example.com/mod v0.0.0-replace => ./mod
Để biết thêm về việc thay thế một module được yêu cầu, bao gồm cả cách dùng các công cụ Go để thực hiện thay đổi, xem:
- Yêu cầu mã nguồn module ngoài từ fork repository của chính bạn
- Yêu cầu mã nguồn module trong một thư mục cục bộ
Để biết thêm về số phiên bản, xem Đánh số phiên bản module.
exclude
Chỉ định một module hoặc phiên bản module cần loại trừ khỏi đồ thị phụ thuộc của module hiện tại.
Để biết thêm, xem directive exclude trong Tham chiếu Go Modules.
Cú pháp
exclude module-path module-version
- module-path
- Module path của module cần loại trừ.
- module-version
- Phiên bản cụ thể cần loại trừ.
Ví dụ
-
Loại trừ example.com/theirmodule phiên bản v1.3.0
exclude example.com/theirmodule v1.3.0
Ghi chú
Dùng directive exclude để loại trừ một phiên bản cụ thể của module vốn được yêu cầu gián tiếp nhưng không thể nạp được vì lý do nào đó. Ví dụ, bạn có thể dùng nó để loại trừ một phiên bản của module có checksum không hợp lệ.
Dùng các directive exclude và replace để kiểm soát việc giải quyết phụ thuộc lúc build khi build module hiện tại (main module mà bạn đang build). Các directive này bị bỏ qua trong những module phụ thuộc vào module hiện tại.
Bạn có thể dùng câu lệnh go mod edit để loại trừ một module, như trong ví dụ sau.
go mod edit -exclude=example.com/[email protected]
Để biết thêm về số phiên bản, xem Đánh số phiên bản module.
retract
Cho biết rằng một phiên bản hoặc một khoảng phiên bản của module được định nghĩa bởi go.mod không nên được phụ thuộc vào. Directive retract hữu ích khi một phiên bản được công bố quá sớm hoặc khi phát hiện một vấn đề nghiêm trọng sau khi phiên bản đã được công bố.
Để biết thêm, xem directive retract trong Tham chiếu Go Modules.
Cú pháp
retract version // rationale
retract [version-low,version-high] // rationale
- version
- Một phiên bản đơn lẻ cần thu hồi.
- version-low
- Cận dưới của khoảng phiên bản cần thu hồi.
- version-high
- Cận trên của khoảng phiên bản cần thu hồi. Cả version-low và version-high đều nằm trong khoảng.
- rationale
- Chú thích tuỳ chọn giải thích lý do thu hồi. Có thể được hiển thị trong các thông báo tới người dùng.
Ví dụ
-
Thu hồi một phiên bản đơn lẻ
retract v1.1.0 // Published accidentally. -
Thu hồi một khoảng phiên bản
retract [v1.0.0,v1.0.5] // Build broken on some platforms.
Ghi chú
Dùng directive retract để cho biết rằng một phiên bản trước đó của module bạn không nên được dùng. Người dùng sẽ không tự động nâng cấp lên một phiên bản đã thu hồi bằng go get, go mod tidy, hay các câu lệnh khác. Người dùng sẽ không thấy phiên bản đã thu hồi như một bản cập nhật khả dụng với go list -m -u.
Các phiên bản đã thu hồi vẫn nên còn khả dụng để những người dùng đã phụ thuộc vào chúng vẫn build được package của họ. Ngay cả khi một phiên bản đã thu hồi bị xoá khỏi repository mã nguồn, nó vẫn có thể còn trên các bản sao (mirror) như proxy.golang.org. Người dùng phụ thuộc vào các phiên bản đã thu hồi có thể được thông báo khi họ chạy go get hoặc go list -m -u trên những module liên quan.
Câu lệnh go khám phá các phiên bản đã thu hồi bằng cách đọc các directive retract trong tệp go.mod ở phiên bản mới nhất của module. Phiên bản mới nhất là, theo thứ tự ưu tiên:
- Phiên bản phát hành cao nhất của nó, nếu có
- Phiên bản tiền phát hành cao nhất của nó, nếu có
- Một pseudo-version cho đầu nhánh mặc định của repository.
Khi bạn thêm một thu hồi, bạn gần như luôn cần gắn tag một phiên bản mới, cao hơn để câu lệnh nhìn thấy nó ở phiên bản mới nhất của module.
Bạn có thể công bố một phiên bản mà mục đích duy nhất là báo hiệu các thu hồi. Trong trường hợp này, phiên bản mới cũng có thể tự thu hồi chính nó.
Ví dụ, nếu bạn vô tình gắn tag v1.0.0, bạn có thể gắn tag v1.0.1 với các directive sau:
retract v1.0.0 // Published accidentally.
retract v1.0.1 // Contains retraction only.
Đáng tiếc là một khi phiên bản đã được công bố, nó không thể thay đổi. Nếu sau này bạn gắn tag v1.0.0 ở một commit khác, câu lệnh go có thể phát hiện checksum không khớp trong go.sum hoặc trong cơ sở dữ liệu checksum.
Các phiên bản đã thu hồi của một module thường không xuất hiện trong kết quả của go list -m -versions, nhưng bạn có thể dùng -retracted để hiển thị chúng. Để biết thêm, xem go list -m trong Tham chiếu Go Modules.
ignore
Chỉ định các đường dẫn thư mục bên trong module mà câu lệnh go nên bỏ qua khi so khớp các mẫu package.
Để biết thêm, xem directive ignore trong Tham chiếu Go Modules.
Cú pháp
ignore path
- path
- Một đường dẫn phân tách bằng dấu gạch chéo cần bỏ qua. Nếu đường dẫn bắt đầu bằng
./, nó được hiểu là tương đối so với thư mục gốc của module. Ngược lại, mọi thư mục mang tên đó ở bất kỳ độ sâu nào bên trong module đều bị bỏ qua.
Ví dụ
-
Bỏ qua một thư mục cục bộ tương đối so với gốc module
ignore ./node_modules -
Bỏ qua mọi thư mục tên
generatedở bất kỳ đâu trong moduleignore generated -
Bỏ qua nhiều đường dẫn bằng một khối
ignore ( static content/html ./third_party/javascript )
Ghi chú
Dùng directive ignore để ngăn câu lệnh go khớp các package trong những thư mục được sinh tự động hoặc không chứa mã Go khi dùng các mẫu ký tự đại diện như ./.... Các thư mục bị bỏ qua và nội dung của chúng được loại khỏi các mẫu package nhưng vẫn hiện diện trong cây tệp của module.
Directive ignore chỉ áp dụng trong tệp go.mod của main module. Nó không có tác dụng trong các tệp go.mod của các phụ thuộc.