A Go source file may contain zero or more import
declarations
immediately after the package
declaration and before the first
non-import declaration. Each import declaration may specify the
import path of a single package, or multiple packages in a
parenthesized list.
The two forms below are equivalent but the second form is more common.
import "fmt" import "os" import ( "fmt" "os" )
Imported packages may be grouped by introducing blank lines; such
groupings usually indicate different domains. The order is not
significant, but by convention the lines of each group are sorted
alphabetically. (Both gofmt
and goimports
will group and sort for you.)
import ( "fmt" "html/template" "os" "golang.org/x/net/html" "golang.org/x/net/ipv4" )
If we need to import two packages whose names are the same,
like math/rand
and crypto/rand
, into a third package,
the import declaration must specify an alternative
name for at least one of them to avoid a conflict.
This is called a renaming import.
import ( "crypto/rand" mrand "math/rand" // alternative name mrand avoids conflict )
The alternative name affects only the importing file. Other files, even ones in the same package, may import the package using its default name, or a different name.
A renaming import may be useful even when there is no conflict.
If the name of the imported package is unwieldy, as is sometimes the
case for automatically generated code, an abbreviated name may be more
convenient.
The same short name should be used consistently to avoid confusion.
Choosing an alternative name can help avoid conflicts with common local variable names.
For example, in a file with many local variables named path
,
we might import the standard "path"
package as pathpkg
.
Each import declaration establishes a dependency from the current
package to the imported package. The go build
tool reports an error
if these dependencies form a cycle.
3.234.177.119