package和文件夹的关系
来源:5-4 目录的整理

拧壶冲
2020-08-21
在看到「5-4目录的整理」,同一个package放到一个目录中,但是package只有最后一个main的package name(在basic下)。container下也有一个main。这个结构我能理解。但是对于package的命名感觉有一些疑惑。 问题是:
- 是不是文件的路径(包括basic和container文件夹)也当做了package的一部分?这样其他代码引用basic的时候,才能通过整个相对路径找到需要使用的package
- 比如一些语言java,C#, ruby,的namespace或者package 都是支持很长的字符串用“.”操作符连接起来,每一段就相当于逻辑或者物理的文件夹,go语言中就是用文件夹来当做每段namespace使用的,这样理解是否正确?
- 关于目录整理后的引用,比如我们basic下面有一个printer.go,也是在main下, container下面有一个builder.go,也在main下
package main
import (
"fmt"
)
func PrintString(str) {
fmt.Println(str)
}
package main
import (
"fmt"
)
func BuildBasicContainer(name) {
...
}
这个时候假设我们项目使用了mod, 我们的mod命名是 github.com/ccmouse, 我们在项目中引用就是
......
import (
"github.com/ccmouse/basic"
"github.com/ccmouse/container"
)
func main() {
basic.PrintString('hello world')
container.BuildBasicContainer('my container')
}
这样理解的mod下的目录以及引用是正确的吗?
写回答
1回答
-
ccmouse
2020-08-25
包的全名=<go mod里的module名字>+相对go.mod的路径+<该路径下文件中第一行申明的package名字>。
所以go要求同一文件夹下所有的文件package名字都一样022021-05-07
相似问题