A declaration names a program entity and specifies some or all of
its properties. There are four major kinds of declarations: var
,
const
, type
, and func
. We’ll talk about variables
and types in this chapter, constants in Chapter 3,
and functions in Chapter 5.
A Go program is stored in one or more files whose names end in
.go
. Each file begins with a package
declaration that says
what package the file is part of.
The package
declaration is followed by
any import
declarations, and then a sequence of package-level
declarations of types, variables, constants, and functions, in any order.
For example, this program declares a constant, a function, and a couple of
variables:
// Boiling prints the boiling point of water. package main import "fmt" const boilingF = 212.0 func main() { var f = boilingF var c = (f - 32) * 5 / 9 fmt.Printf("boiling point = %g°F or %g°C ", f, c) // Output: // boiling point = 212°F or 100°C }
The constant boilingF
is a package-level declaration (as is
main
), whereas the variables f
and c
are
local to the function main
.
The name of each package-level entity is
visible not only throughout the source file that contains its
declaration, but throughout all the files of the package.
By contrast, local declarations are visible only within
the function in which they are declared and perhaps only within a
small part of it.
A function declaration has a name, a list of parameters (the variables whose values are provided by the function’s callers), an optional list of results, and the function body, which contains the statements that define what the function does. The result list is omitted if the function does not return anything. Execution of the function begins with the first statement and continues until it encounters a return statement or reaches the end of a function that has no results. Control and any results are then returned to the caller.
We’ve seen a fair number of functions already and there are lots more
to come, including an extensive discussion in Chapter 5, so this is only a sketch. The function fToC
below
encapsulates the temperature conversion logic so that it is defined
only once but may be used from multiple places. Here main
calls it
twice, using the values of two different local constants:
// Ftoc prints two Fahrenheit-to-Celsius conversions. package main import "fmt" func main() { const freezingF, boilingF = 32.0, 212.0 fmt.Printf("%g°F = %g°C ", freezingF, fToC(freezingF)) // "32°F = 0°C" fmt.Printf("%g°F = %g°C ", boilingF, fToC(boilingF)) // "212°F = 100°C" } func fToC(f float64) float64 { return (f - 32) * 5 / 9 }
3.149.255.162