Project Organization and Style
Package Names
Go package names are short, lowercase identifiers that make selectors read naturally.
Package Names
package_names.go
package main
import "fmt"
func isLowerIdentifier(name string) bool {
if name == "" {
return false
}
for _, ch := range name {
if ch < 'a' || ch > 'z' {
return false
}
}
return true
}
func main() {
var packageName =
lowercase := isLowerIdentifier(packageName)
selector := packageName + ".Store"
style := "review"
if lowercase {
style = "ok"
}
fmt.Println("package=", packageName)
fmt.Println("selector=", selector)
fmt.Println("lowercase=", lowercase)
fmt.Println("style=", style)
}
package main
import "fmt"
func isLowerIdentifier(name string) bool {
if name == "" {
return false
}
for _, ch := range name {
if ch < 'a' || ch > 'z' {
return false
}
}
return true
}
func main() {
var packageName =
lowercase := isLowerIdentifier(packageName)
selector := packageName + ".Store"
style := "review"
if lowercase {
style = "ok"
}
fmt.Println("package=", packageName)
fmt.Println("selector=", selector)
fmt.Println("lowercase=", lowercase)
fmt.Println("style=", style)
}
package main
import "fmt"
func isLowerIdentifier(name string) bool {
if name == "" {
return false
}
for _, ch := range name {
if ch < 'a' || ch > 'z' {
return false
}
}
return true
}
func main() {
var packageName =
lowercase := isLowerIdentifier(packageName)
selector := packageName + ".Store"
style := "review"
if lowercase {
style = "ok"
}
fmt.Println("package=", packageName)
fmt.Println("selector=", selector)
fmt.Println("lowercase=", lowercase)
fmt.Println("style=", style)
}
package naming
Good package names avoid stutter and casing surprises at call sites.