--- date: 2020-08-26 id: 3123184d-c919-4cf6-8339-3f9b8ca5a1db title: Golang Packages --- # Basics Every Go program is made up of packages. Programs start running in package \`main\`. By convention the pacckage name is the same as the last element of the import path. For instance, the \`math/rand\` package comprises files that begin with the statement \`package rand\`. ``` go package main import ( "fmt" "math/rand" ) func main() { fmt.Println("My favorite number is", rand.Intn(10)) } ``` # Imports It's best practice to convert multiple import statements to a "factored" import statement: ``` go package main import "fmt" import "math" func main() { fmt.Printf("This uses multiple import statements\n") fmt.Printf("Now you have %g problems.\n", math.Sqrt(7)) } ``` should be ``` go package main import ( "fmt" "math" ) func main() { fmt.Printf("This uses a parenthesized \"factored\" import statement\n") fmt.Printf("Now you have %g problems.\n", math.Sqrt(7)) } ``` # Exported names In Go, a name is exported if it begins with a capital letter. When importing a package, you can refer only to its exported names. Any "unexported" names are not accessible from outside the package.