-
-
Save attawayinc/0b297b03f5117c9006ce02e1d2bbfbfd to your computer and use it in GitHub Desktop.
go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
sudo apt install golang-go | |
web@tayrita:~/src/ato-toolkit$ go | |
Go is a tool for managing Go source code. | |
Usage: | |
go command [arguments] | |
The commands are: | |
build compile packages and dependencies | |
clean remove object files and cached files | |
doc show documentation for package or symbol | |
env print Go environment information | |
bug start a bug report | |
fix update packages to use new APIs | |
fmt gofmt (reformat) package sources | |
generate generate Go files by processing source | |
get download and install packages and dependencies | |
install compile and install packages and dependencies | |
list list packages | |
run compile and run Go program | |
test test packages | |
tool run specified go tool | |
version print Go version | |
vet report likely mistakes in packages | |
Use "go help [command]" for more information about a command. | |
Additional help topics: | |
c calling between Go and C | |
buildmode build modes | |
cache build and test caching | |
filetype file types | |
gopath GOPATH environment variable | |
environment environment variables | |
importpath import path syntax | |
packages package lists | |
testflag testing flags | |
testfunc testing functions | |
Use "go help [topic]" for more information about that topic. | |
web@tayrita:~/src/ato-toolkit$ gopath | |
Command 'gopath' not found, did you mean: | |
command 'gspath' from deb gnustep-base-runtime | |
Try: sudo apt install <deb name> | |
web@tayrita:~/src/ato-toolkit$ go gopath | |
go: unknown subcommand "gopath" | |
Run 'go help' for usage. | |
web@tayrita:~/src/ato-toolkit$ go help gopath | |
The Go path is used to resolve import statements. | |
It is implemented by and documented in the go/build package. | |
The GOPATH environment variable lists places to look for Go code. | |
On Unix, the value is a colon-separated string. | |
On Windows, the value is a semicolon-separated string. | |
On Plan 9, the value is a list. | |
If the environment variable is unset, GOPATH defaults | |
to a subdirectory named "go" in the user's home directory | |
($HOME/go on Unix, %USERPROFILE%\go on Windows), | |
unless that directory holds a Go distribution. | |
Run "go env GOPATH" to see the current GOPATH. | |
See https://golang.org/wiki/SettingGOPATH to set a custom GOPATH. | |
Each directory listed in GOPATH must have a prescribed structure: | |
The src directory holds source code. The path below src | |
determines the import path or executable name. | |
The pkg directory holds installed package objects. | |
As in the Go tree, each target operating system and | |
architecture pair has its own subdirectory of pkg | |
(pkg/GOOS_GOARCH). | |
If DIR is a directory listed in the GOPATH, a package with | |
source in DIR/src/foo/bar can be imported as "foo/bar" and | |
has its compiled form installed to "DIR/pkg/GOOS_GOARCH/foo/bar.a". | |
The bin directory holds compiled commands. | |
Each command is named for its source directory, but only | |
the final element, not the entire path. That is, the | |
command with source in DIR/src/foo/quux is installed into | |
DIR/bin/quux, not DIR/bin/foo/quux. The "foo/" prefix is stripped | |
so that you can add DIR/bin to your PATH to get at the | |
installed commands. If the GOBIN environment variable is | |
set, commands are installed to the directory it names instead | |
of DIR/bin. GOBIN must be an absolute path. | |
Here's an example directory layout: | |
GOPATH=/home/user/go | |
/home/user/go/ | |
src/ | |
foo/ | |
bar/ (go code in package bar) | |
x.go | |
quux/ (go code in package main) | |
y.go | |
bin/ | |
quux (installed command) | |
pkg/ | |
linux_amd64/ | |
foo/ | |
bar.a (installed package object) | |
Go searches each directory listed in GOPATH to find source code, | |
but new packages are always downloaded into the first directory | |
in the list. | |
See https://golang.org/doc/code.html for an example. | |
Internal Directories | |
Code in or below a directory named "internal" is importable only | |
by code in the directory tree rooted at the parent of "internal". | |
Here's an extended version of the directory layout above: | |
/home/user/go/ | |
src/ | |
crash/ | |
bang/ (go code in package bang) | |
b.go | |
foo/ (go code in package foo) | |
f.go | |
bar/ (go code in package bar) | |
x.go | |
internal/ | |
baz/ (go code in package baz) | |
z.go | |
quux/ (go code in package main) | |
y.go | |
The code in z.go is imported as "foo/internal/baz", but that | |
import statement can only appear in source files in the subtree | |
rooted at foo. The source files foo/f.go, foo/bar/x.go, and | |
foo/quux/y.go can all import "foo/internal/baz", but the source file | |
crash/bang/b.go cannot. | |
See https://golang.org/s/go14internal for details. | |
Vendor Directories | |
Go 1.6 includes support for using local copies of external dependencies | |
to satisfy imports of those dependencies, often referred to as vendoring. | |
Code below a directory named "vendor" is importable only | |
by code in the directory tree rooted at the parent of "vendor", | |
and only using an import path that omits the prefix up to and | |
including the vendor element. | |
Here's the example from the previous section, | |
but with the "internal" directory renamed to "vendor" | |
and a new foo/vendor/crash/bang directory added: | |
/home/user/go/ | |
src/ | |
crash/ | |
bang/ (go code in package bang) | |
b.go | |
foo/ (go code in package foo) | |
f.go | |
bar/ (go code in package bar) | |
x.go | |
vendor/ | |
crash/ | |
bang/ (go code in package bang) | |
b.go | |
baz/ (go code in package baz) | |
z.go | |
quux/ (go code in package main) | |
y.go | |
The same visibility rules apply as for internal, but the code | |
in z.go is imported as "baz", not as "foo/vendor/baz". | |
Code in vendor directories deeper in the source tree shadows | |
code in higher directories. Within the subtree rooted at foo, an import | |
of "crash/bang" resolves to "foo/vendor/crash/bang", not the | |
top-level "crash/bang". | |
Code in vendor directories is not subject to import path | |
checking (see 'go help importpath'). | |
When 'go get' checks out or updates a git repository, it now also | |
updates submodules. | |
Vendor directories do not affect the placement of new repositories | |
being checked out for the first time by 'go get': those are always | |
placed in the main GOPATH, never in a vendor subtree. | |
See https://golang.org/s/go15vendor for details. | |
web@tayrita:~/src/ato-toolkit$ go env gopath |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment