The Basics: Part II
Control statements
Implicit control through the range operator for composite types:
for i, v := range myArray {
fmt.Println(i, v)
}
for k, v := range myMap {
fmt.Println(k, v)
}
To use the value only, replace i or k with _, which is the blank identifier.
Switch
No break statement required. default is always evaluated last regardless of where you put it.
switch a := f.Get(); a {
case 0, 1, 2:
fmt.Println("ok")
case 3, 4:
default:
fmt.Println("missing")
}
Packages
Every standalone program has a main package.
You can declare anything at package scope with the exception of using the := short variable declaration operator.
Visibility control
Every name that’s capitalized is exported.
package secrets
import ...
type internal struct {
...
}
func GetAll(space, name string) (map[string]string, error) {
// This can be called through secrets.GetAll()
}
A good package should embed deep functionality behind a simple API.