我有一个提供库的项目(导出一些函数),还必须提供命令行界面(必须有一个可执行文件)。
目录结构示例:
whatever.io/ myproject/ main.go myproject.go
go编译器需要 包main 和 func main 才能开始执行。我的图书馆需要在上面放东西的 包myproject 。这是我在构建另一个试图导入myproject的项目时go工具所说的:
main.go:5:2: found packages myproject (myproject.go) and main (main.go) in $GOPATH/src/whatever.io/myproject
因此,我相信没有办法。
我应该将库或CLI移至另一个软件包吗?
只需将软件包移动到main.go相同目录中的新文件夹中即可。记住要从$ GOPATH的引用中导入新包。
例:
user@user:~/p/go/test/so-multipack$ ls -R .: a main.go ./a: a.go user@user:~/p/go/test/so-multipack$ cat main.go package main import ( "../so-multipack/a" ) func main(){ a.Hello() } user@user:~/p/go/test/so-multipack$ cat a/a.go package a import ( "fmt" ) func Hello(){ fmt.Println("hello from a") } user@user:~/p/go/test/so-multipack$ go run main.go hello from a user@user:~/p/go/test/so-multipack$ go build user@user:~/p/go/test/so-multipack$ ls a main.go so-multipack user@user:~/p/go/test/so-multipack$