gpt4 book ai didi

go - go run ./path/dir和go run path/dir之间的区别

转载 作者:行者123 更新时间:2023-12-01 22:35:12 25 4
gpt4 key购买 nike

注意:这不是询问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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com