注意:这不是询问Why the functions defined in other "main" packages are not recognised?。
我有一个具有以下结构的项目:
转到/src/github.com/me/project/cmd/web/main.go
# main.go
package main
import(
"github.com/me/myproject/internal/myproject"
)
void main() {
// ...
}
转到/src/github.com/me/project/cmd/web/handlers.go
# handlers.go
package main
void someFunc() {
// ...
}
我编译并成功运行:
go run ./cmd/web
我也可以使用
go run cmd/web/*.go
成功运行但是,当我尝试使用
go run cmd/web
运行时,为什么编译失败并显示以下输出:package cmd/web: package cmd/web is not in GOROOT (/usr/local/go/src/cmd/web)
为什么
./cmd/web
有效,但cmd/web
不起作用?
最佳答案
运行./cmd/web
时,您在当前目录树中引用了正确的目录。cmd/web
指的是stdlib软件包所在的软件包。如果您尝试运行此示例
go run net/http
它会告诉您它无法运行,因为它不是
main
软件包。它找到了具有该名称的stdlib net/http
软件包;但是由于cmd/web
不存在,所以它不起作用
关于go - go run ./path/dir和go run path/dir之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58796736/