Go 语言中的包可以被嵌套在其他包中,这样就可以形成一种包目录的结构。例如,有一个名为 "mypackage" 的包,它可以包含在另一个名为 "myparentpackage" 的包中,这样就形成了如下的目录结构:
myparentpackage/
├── myparentpackage.go
└── mypackage
├── mypackage.go
├── myfile1.go
└── myfile2.go
其中,"mypackage" 目录中的三个文件都属于 "mypackage" 包,而 "myparentpackage.go" 文件属于 "myparentpackage" 包。
在导入时,可以使用相对导入路径或绝对导入路径。相对导入路径就是从当前包所在的目录开始的相对路径,例如在 "myparentpackage.go" 文件中导入 "mypackage" 包可以使用以下任意一种导入路径:
import (
"./mypackage"
"../myparentpackage/mypackage"
)
绝对导入路径则以 GOPATH 和 /src 作为起始点,例如 "mypackage" 包可以使用以下导入路径:
import "myusername/mypackage"
其中,myusername 是 GOPATH 的一部分,即 $GOPATH/src/myusername/mypackage。
如果嵌套的包的名字与父包的名字相同,可以使用别名来导入,例如在 "myparentpackage.go" 文件中可以使用以下导入语句:
import (
mypkg "./mypackage"
)
这样可以避免包名冲突。