The names of Go functions, variables, constants, types, statement labels, and packages
follow a simple rule: a name begins with a letter (that is, anything that
Unicode deems a letter) or an underscore and may have any number of
additional letters, digits, and underscores.
Case matters: heapSort
and Heapsort
are different names.
Go has 25 keywords
like if
and switch
that may be used only where the syntax permits;
they can’t be used as names.
break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var
In addition, there are about three dozen predeclared
names like int
and true
for built-in constants, types,
and functions:
Constants: | true false iota nil |
Types: | int int8 int16 int32 int64 |
uint uint8 uint16 uint32 uint64 uintptr |
|
float32 float64 complex128 complex64 |
|
bool byte rune string error |
Functions: | make len cap new append copy close delete |
complex real imag |
|
panic recover |
These names are not reserved, so you may use them in declarations. We’ll see a handful of places where redeclaring one of them makes sense, but beware of the potential for confusion.
If an entity is declared within a function, it is local to that function.
If declared outside of a function, however, it is
visible in all files of the package to which it belongs.
The case of the first letter of a name determines
its visibility across package boundaries. If the name
begins with an upper-case letter, it is
exported, which means that it is visible and accessible outside
of its own package and may be referred to by other parts of the program,
as with Printf
in the fmt
package.
Package names themselves are always in lower case.
There is no limit on name length, but convention and style
in Go programs lean toward short names, especially for
local variables with small scopes; you are much more likely to see variables named i
than theLoopIndex
. Generally, the larger the scope of a name,
the longer and more meaningful it should be.
Stylistically, Go programmers use “camel case” when forming names
by combining words; that is, interior capital letters are preferred
over interior underscores.
Thus the standard libraries have functions with names like
QuoteRuneToASCII
and parseRequestLine
but never
quote_rune_to_ASCII
or parse_request_line
.
The letters of acronyms and initialisms like ASCII and HTML
are always rendered in the same case, so a function might be
called htmlEscape
, HTMLEscape
, or escapeHTML
, but
not escapeHtml
.
3.133.160.156