要点说明
import后面的最后一个元素其实是目录名而不是包名!!!
其实包名可以和路径名不一致的,将包名和路径名设为一致是Go的特例,也是惯例(建议大家都这样做)
举例说明
假设以下为/home/src/work/conn/foo1.go下的代码(就当我的GOPATH路径为/home吧)
//这样的包名就与路径名不一致了
//但是可以编译成功
package pro
import "fmt"
func Test() {
fmt.Println("test")
}
我们接下来要调用该包的Test函数
错误的调用代码如下所示
如果你选择以下3种代码的任意一种,你将会编译失败!
错误示例1
package main
import "work/conn"
func main() {
conn.Test()
}
错误示例2
package main
import "work/pro"
func main() {
pro.Test()
}
错误示例3
package main
import "work/pro"
func main() {
conn.Test()
}
正确的调用代码如下所示
正确样本1
package main
import "work/conn"
func main() {
pro.Test()
}
正确样本2
package main
import ccc "work/conn"
func main() {
ccc.Test()
}