An Entrypoint
Like most programming languages, Go requires an entrypoint to get a program
started. You may have multiple entrypoints in a single project, but only one per
package and the package name must be main
. Inside of a main
package, the
main()
function is used to start the program. However, in a non-main
package, main()
is not reserved as a special word and can be used as a normal
function or variable.
package main
func main() {
// do things here
}
Another special function to the main
package is init()
. The init()
executes prior to main()
, so it is commonly used for operations like reading
and setting environment variables, parsing command flags, and opening database
connections.
package main
import (
"fmt"
"os"
)
var envVars []string
func init() { // this is run first
envVars = os.Environ()
}
func main() { // evnVars is populated when main() runs
fmt.Println(envVars)
}
Note that neither the main()
nor the init()
function ever have explicit
return values. If you need to exit main()
early, you can use
os.Exit()
.