在未导出的顶层变量和常量前面加上_,以便在使用它们时清楚地表明它们是全局的标识符。
异常:未导出的错误值,应该以err作为前缀。
基本原理:顶层变量和常量有一个包的作用域。使用通用名称很容易在不同的文件中意外地使用错误的值。
Bad
// foo.go
//这两个常量拥有包级作用域
const (
defaultPort = 8080
defaultUser = "user"
)
// bar.go
func Bar() {
//这个文件中,把默认端口给改掉了
defaultPort := 9090
...
fmt.Println("Default port", defaultPort)
// 如果Bar()的第一行被删除,我们不会看到编译错误。
}
Good
// foo.go
const (
_defaultPort = 8080
_defaultUser = "user"
)