Go Tool: Difference between revisions
(→get) |
(→get) |
||
Line 79: | Line 79: | ||
==<tt>get</tt>== | ==<tt>get</tt>== | ||
The <code>get</code> command downloads packages and installs them. The shared flags described here apply: {{Internal|Go_Tool_Shared_Flags#Overview|Shared Flags}} | The <code>get</code> command downloads packages and installs them. The shared flags described here apply: {{Internal|Go_Tool_Shared_Flags#Overview|Shared Flags}} | ||
<code>get</code> is the preferred way to update <code>go.mod</code> with a new dependency: | |||
{{Internal|Go.mod#Adding_a_Dependency_to_a_Module|<tt>go.mod</tt> | <tt>go get</tt>}} | {{Internal|Go.mod#Adding_a_Dependency_to_a_Module|<tt>go.mod</tt> | <tt>go get</tt>}} | ||
===Options=== | ===Options=== |
Revision as of 20:16, 3 January 2024
External
Internal
Overview
go
is a command line tool with multiple uses: package manager, build tool and test driver. go
manage packages in workspaces, query metadata about packages, print documentation, build, format, download, test, etc.
Commands
Help
go help <command>
go help build
build
install
run
The run
command compiles the specified packages or files by delegating to go build
and then runs the executable. There must be a main
for an executable to be generated.
cd $PROJECT_DIR
go run ./src/main/main.go some-arg-1 some-arg-2
The first argument that does not end in .go
is assumed to be the beginning of the list of command line arguments of the executable.
Is the above true though? The following command runs fine, where "example.com/experimental-go-module/cmd/gotest" is the package path of a "main" package inside of the "example.com/experimental-go-module" module. No argument ends in .go
, yet it works:
go run example.com/experimental-go-module/cmd/gotest
The shared flags described here apply:
clean
The shared flags described here apply:
-cache
Clean the build cache:
go clean -cache
-fuzzcache
Clean the fuzz cache:
go clean -fuzzcache
doc
The doc
command prints documentation for a package or a package member:
go doc time
go doc time.Since
Deplete: doc
fmt (gofmt)
The fmt
("format") command formats source code files, by applying a predetermined layout to Go source code. It delegates to gofmt
, and it is equivalent to:
gofmt -l -w <file>
One counterintuitive fact is that it uses the tab character for indentation. This is uncommon.
Rob Pike: "gofmt style is no one's favorite, yet gofmt is everyone's favorite".
get
The get
command downloads packages and installs them. The shared flags described here apply:
get
is the preferred way to update go.mod
with a new dependency:
Options
-u
The -u
flag instructs get
to update modules providing dependencies of packages named on the command line to use newer minor or patch releases when available.
list
The list
command lists all installed packages. The shared flags described here apply:
test
The test
command runs tests. The shared flags described here apply:
For more details, see:
env
get
The get
command retrieve and update packages.
TODO Addison-Wesley The Go Programming Language Section 10.7.2
mod
vet
Deplete: vet
version
Deplete version