1、导入带下划线的包名
import (
"log"
"os"
_"packs/chapter2/sample/matchers"
"packs/chapter2/sample/search"
)
从上面的可以看到,导入的路径前面有一个下划线,这是为了让go语言对包做初始化,但是并不使包里的标识符。为了让程序的可读性更强,go编译器不允许声明导入某个包却不使用。下划线让编译器接受这类导入,并且调用对应包内的所有代码文件里的定义的init函数。
2、 对导入包名的注意事项
(1)当代码导入了一个包时,程序可以直接访问这个包中任意一个公开的标识符,这些标识符以大写字母开头。以小写字母开头的标识符是不公开的,不能被其他包中的代码直接访问。
(2)一旦编译器找到满足import 语句的包,就停止进一步查找。编译器在查找包时,会首先查找go的安装目录,然后才会按顺序查找 GOPATH变量里列出的目录。
(3)远程导入
import "github.com/spf13/viper"
从上面代码中,可以看到import导入了一个远程的包。如果在导入包的路径中包含URL,可以使用GO工具链从DVCS(Distributed Version Control Systems,DVCS)获取包,并把包的源代码保存在GOPATH指向的路径里与URL匹配的目录中。这个获取过程可以使用 go get 命令完成。
(4)命名导入
重名的包可以通过命名导入来导入,命名导入是指,在import语句给出的包路径的左侧定义一个名字,将导入的包命名为新名字。
import (
"fmt"
myfmt "mylib/fmt"
)