在answer之后,我创建了以下项目结构:
.
├── bin
├── pkg
└── src
└── github.com
└── GITHUB_USERNAME
└── PROJECTNAME
├── lib
│ └── model.go
│ └── ... .go
├── LICENSE
├── README.md
└── PROJECTNAME.go
PROJECTNAME.go
包含main
model.go
包含PROJECTNAME
在PROJECTNAME.go
我正在导入以下内容:
import(
'github.com/GITHUB_USERNAME/PROJECTNAME/lib/model'
)
但是当我运行go build
时,我得到了以下错误:
cannot find package "github.com/GITHUB_USERNAME/PROJECTNAME/lib/model" in any of:
/usr/lib/go/src/pkg/github.com/GITHUB_USERNAME/PROJECTNAME/lib/model (from $GOROOT)
/home/USERNAME/go/src/github.com/GITHUB_USERNAME/PROJECTNAME/lib/model (from $GOPATH)
如何正确导入包名称?还有其他策略吗?
答案 0 :(得分:1)
这里有两件事:
github.com/GITHUB_USERNAME/PROJECTNAME/lib/model
答案 1 :(得分:1)
您的主程序包中的import语句应为
import(
"github.com/GITHUB_USERNAME/PROJECTNAME/lib/PROJECTNAME"
)
你说你的model.go使用PROJECTNAME作为包。因此,您实际上并未在导入路径中命名文件。最后一个组件应该是包名。这意味着您可以在lib目录中拥有许多go文件,所有文件都包含PROJECTNAME。
答案 2 :(得分:1)
包导入路径由目录名定义,而不是文件名。
正确的导入路径是"github.com/GITHUB_USERNAME/PROJECTNAME/lib"
,该文件夹中的所有go文件必须在顶部具有相同的package
子句。
package子句后面的标识符是将导入到导入它的包中的标识符。因此,如果它是package foo
,您可以在导入代码中通过Bar
访问foo.Bar
标识符。
按照惯例,作者通常使用导入路径的最后部分作为package
名称,因此在这种情况下,您应该在lib下的所有Go文件的顶部放置package lib
文件夹中。