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

注意:这不是在问Why the functions defined in other "main" packages are not recognised?

我有一个具有以下结构的项目:

go / src / github.com / me / project / cmd / web / main.go

# main.go
package main

import(
  "github.com/me/myproject/internal/myproject"
)

void main() {
  // ...
}

go / 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不起作用?

lty83938477 回答:go run ./path/dir和go run path / dir之间的区别

运行./cmd/web时,将引用当前目录树中的正确目录。

cmd/web指的是stdlib软件包所在的软件包。如果您尝试运行此示例

go run net/http

它将告诉您它无法运行,因为它不是main软件包。它找到了具有该名称的stdlib net/http软件包;但由于cmd/web不存在,因此无法正常工作

本文链接:https://www.f2er.com/3126085.html

大家都在问