登录
首页 >  Golang >  Go问答

如何从父目录运行同级 Go 应用程序(模块)

来源:stackoverflow

时间:2024-04-09 13:48:35 437浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《如何从父目录运行同级 Go 应用程序(模块)》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

我有多个 go 项目(它们都是 go 模块),都在一个文件夹中。它们都是 http 服务器并交换 rest 调用,因此,我需要它们全部同时启动和运行。

因此,出于本地测试的目的,我认为从父级运行所有这些文件是合理的,而不是移动所有项目根目录并在多个终端中运行 go run main.go

container_dir/
├── prj1/
│   ├── go.mod
│   ├── main.go
│   └── ...
├── prj2/
│   ├── go.mod
│   ├── main.go
│   └── ...
└── ...

以下是我尝试过的一些命令以及每次的错误消息:

container_dir $ go run ./*/*.go
##error: named files must all be in one directory; have ./prj1/ and ./prj2/
container_dir $ go run *.go
##error: stat *.go: no such file or directory
container_dir $ go run ./prj1 ./prj2/
##ERROR: cannot find package "github.com/jackc/pgx/v4" in any of:
           /usr/local/go/src/github.com/jackc/pgx/v4 (from $GOROOT)
           /home/user/go/src/github.com/jackc/pgx/v4 (from $GOPATH)
         cannot find package ...

所以,我可以对这个问题进行最终的重新调整:当它们具有一些第三方依赖项等时,如何在同级目录中运行多个 go 模块?

p.s:go 模块尽可能建议我的项目的 container_dir 位于任意位置,并且我预计没有 $gopath 相关性。

go版本:1.13.6


解决方案


  1. 不要在小型演示式测试之外使用 go run
  2. 源路径是编译时需要考虑的问题,并且在运行时无关 - 在程序运行时位于“同级目录”中并不意味着任何事情
  3. go run 运行单个程序;就像构建一个程序并运行其可执行二进制文件(这就是 go run 所做的)一样,运行一个程序。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>