包声明
在 Go 语言中,一个源码文件必须以一个包声明语句开始。包声明语句指定了该文件属于哪个包,并在这个包的范围内定义了变量、常量、类型和函数等。每个 Go 语言源文件都属于一个包,且它只能属于单一的包。
package packageName
其中 packageName 是包名,必须是标识符(大小写敏感)。
如果一个程序文件声明了 package main,则它表示这个程序是可执行程序,而不是一个库。其他的文件应该声明自己属于哪个包,来表明他们是库文件。
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
包导入
在 Go 语言中,使用 import 关键字导入包。可以单独导入,也可以批量导入。导入的包可以是内建包、标准库包,也可以是第三方包。如果包名与目录名不同,将使用目录名。导入的包会被编译器自动安装到工作目录下的 pkg 和 bin 目录中。
常见的导入方式有两种:
- 单独导入
import "fmt"
- 批量导入
import (
"fmt"
"io/ioutil"
)
如果批量导入多个包中有相同的引用名称,则需要使用别名。
import (
"fmt"
m "math" // 给 math 包起别名 m
)
空白导入
在 Go 语言中,导入一个包后,编译器会检查是否使用了该包的任何函数或变量,如果没有,则会产生编译错误。而在某些情况下,我们只是想让编译器将这个包安装到 pkg 和 bin 目录中,而不是要使用其中的函数或变量。这种情况下,就需要使用空白导入了。在导入语句中,用_来表示空白标识符。
import _ "github.com/some/package"
包命名
包名应该简短、有意义,且采用小写字母(不要使用下划线或混用大小写)。不要使用与 Go 关键字相同的名称,并避免使用与内建类型相同的名称。 缩写的命名应该遵循大小写规则,例如,URL 应该写成 url。包名应该尽量保持简洁,但同时要能够清晰地反映出包所提供的功能。
在 Go 语言中,导入的包名可以使用别名,这也是一个很好的命名方式,因为不同的导入路径可能会有相同的包名。别名应该是清晰、简短的单词,例如,将 database/sql 包命名为 db 是一个常见的做法。