go.mod
filesgo.mod
file formatgo mod download
go mod verify
go mod edit
go clean -modcache
build list: The list of module versions that will be used for a build command such as go build
, go list
, or go test
. The build list is determined from the main module's go.mod
file and go.mod
files in transitively required modules using minimal version selection. The build list contains versions for all modules in the module graph, not just those relevant to a specific command.
go.mod
file: The file that defines a module's path, requirements, and other metadata. Appears in the module's root directory. See the section on go.mod
files.
import path: A string used to import a package in a Go source file. Synonymous with package path.
main module: The module in which the go
command is invoked.
major version: The first number in a semantic version (1
in v1.2.3
). In a release with incompatible changes, the major version must be incremented, and the minor and patch versions must be set to 0. Semantic versions with major version 0 are considered unstable.
major version suffix: A module path suffix that matches the major version number. For example, /v2
in example.com/mod/v2
. Major version suffixes are required at v2.0.0
and later and are not allowed at earlier versions. See the section on Major version suffixes.
minimal version selection (MVS): The algorithm used to determine the versions of all modules that will be used in a build. See the section on Minimal version selection for details.
minor version: The second number in a semantic version (2
in v1.2.3
). In a release with new, backwards compatible functionality, the minor version must be incremented, and the patch version must be set to 0.
module: A collection of packages that are released, versioned, and distributed together.
module graph: The directed graph of module requirements, rooted at the main module. Each vertex in the graph is a module; each edge is a version from a require
statement in a go.mod
file (subject to replace
and exclude
statements in the main module's go.mod
file.
module path: A path that identifies a module and acts as a prefix for package import paths within the module. For example, "golang.org/x/net"
.
module root directory: The directory that contains the go.mod
file that defines a module.
package: A collection of source files in the same directory that are compiled together. See the Packages section in the Go Language Specification.
package path: The path that uniquely identifies a package. A package path is a module path joined with a subdirectory within the module. For example "golang.org/x/net/html"
is the package path for the package in the module "golang.org/x/net"
in the "html"
subdirectory. Synonym of import path.
patch version: The third number in a semantic version (3
in v1.2.3
). In a release with no changes to the module's public interface, the patch version must be incremented.
pre-release version: A version with a dash followed by a series of dot-separated identifiers immediately following the patch version, for example, v1.2.3-beta4
. Pre-release versions are considered unstable and are not assumed to be compatible with other versions. A pre-release version sorts before the corresponding release version: v1.2.3-pre
comes before v1.2.3
. See also release version.
pseudo-version: A version that encodes a revision identifier (such as a Git commit hash) and a timestamp from a version control system. For example, v0.0.0-20191109021931-daa7c04131f5
. Used for compatibility with non-module repositories and in other situations when a tagged version is not available.
release version: A version without a pre-release suffix. For example, v1.2.3
, not v1.2.3-pre
. See also pre-release version.
version: An identifier for an immutable snapshot of a module, written as the letter v
followed by a semantic version. See the section on Versions.