|
|
Line 60: |
Line 60: |
| {{Internal|Go_fmt#Overview|<tt>go fmt</tt>}} | | {{Internal|Go_fmt#Overview|<tt>go fmt</tt>}} |
|
| |
|
| ==<tt>get</tt>== | | ==<span id='Problems_with_get'></span><tt>get</tt>== |
| {{Internal|Go get#Overview|<tt>go get</tt>}} | | {{Internal|Go get#Overview|<tt>go get</tt>}} |
|
| |
| The <code>get</code> command downloads packages and installs them, possibly updating a local obsolete version. It does that by connecting to the remote repository that maintains the package source code and downloading the source tree locally. <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>}}
| |
| Once <code>go.mod</code> has been updated by <code>go get</code>, the package's import pat can be used in the project's <code>[[Go_Packages#Import_Statement|import]]</code> statements.
| |
|
| |
| <code>go get</code> is sensitive to the Git configuration present in <code>~/.gitconfig</code>, especially repository configuration:
| |
| <font size=-2>
| |
| [url "git@github.example.com:some-repo"]
| |
| insteadOf = https://github.example.com/some-repo
| |
| </font>
| |
| The shared flags described here apply: {{Internal|Go_Tool_Shared_Flags#Overview|Shared Flags}}
| |
| ===Problems with <tt>get</tt>===
| |
| <font color=darkkhaki>The <code>import</code> statement drives <code>go get</code> but the <code>import</code> statement does not contain sufficient information to identify which revision of a package should be fetched any time <code>go get</code> is called. The possibility that <code>go get</code> can fetch a different version of code for any given package at any time makes supporting the Go tooling in any reproducible solution complicated and tedious.</font>
| |
|
| |
| ===Options===
| |
| ====<tt>-u</tt>====
| |
| The <code>-u</code> flag instructs <code>get</code> to update modules providing dependencies of packages named on the command line to use newer minor or patch releases when available.
| |
| ====<tt>-d</tt>====
| |
| Stop after downloading the package, do not install the package.
| |
| ====<tt>-f</tt>====
| |
| Only valid when <code>[[#-u|-u]]</code> is set, forces <code>get -u</code> not to verify that each package has been checked out from the source control repository implied by its import path. This can be useful if the source is a local fork of the original.
| |
|
| |
| ====<tt>-fix</tt>====
| |
| Run the fix tool on the downloaded packages before resolving dependencies or building the code.
| |
| ====<tt>-t</tt>====
| |
| Also download the packages required to build the tests for the specified packages.
| |
|
| |
|
| ==<tt>list</tt>== | | ==<tt>list</tt>== |
Latest revision as of 08:07, 23 November 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.
Shared Flags
- Shared Flags
Commands
Help
build
- go build
install
- go 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:
- Shared Flags
clean
The shared flags described here apply:
- Shared Flags
-cache
Clean the build cache:
-fuzzcache
Clean the fuzz cache:
link
- go tool link
doc
- go doc
fmt (gofmt)
- go fmt
get
- go get
list
- go list
test
- go test Command
env
- go env
mod
- go mod
vet
Deplete: vet
version
Deplete version