main.go当在之外使用Go模块(go版本> = 1.11)时,找不到在本地包中分解出某些代码的方法$GOPATH。
我没有导入任何需要包含的外部依赖项go.mod,我只是想在本地组织此Go模块的源代码。
文件main.go:
package main
// this import does not work
import "./stuff"
func main() {
stuff.PrintBaz()
}
Run Code Online (Sandbox Code Playgroud)
该文件./stuff/bar.go(假装为本地软件包):
package stuff
import "log"
type Bar struct {
Baz int
}
func PrintBaz() {
baz := Bar{42}
log.Printf("Bar struct: %v", baz)
}
Run Code Online (Sandbox Code Playgroud)
文件go.mod(命令go mod init foo):
module foo
go 1.12
Run Code Online (Sandbox Code Playgroud)
执行时go run main.go:
import "./stuff",那么我明白了build command-line-arguments: cannot find module for path …我有一个具有多种主要方法的项目。当运行go build program1/main1.go具有与 不同的依赖项集时program2/main2.go,我的第一个go build似乎更改了我的go.mod文件并删除了它认为不需要的依赖项。然而main2会需要这些依赖。
我试过使用,go build ...但这也创建了一组不同的依赖项。具体来说,似乎所有//indirect依赖项都被删除并导致 program2 失败。
有没有办法运行go build或go run不更新go.mod文件?使用go build -mod=readonly program1/main1.go它告诉我它失败了,因为需要更新依赖项..
我正在学习 Go,专业是用 Google Go 进行编程。它有几门课程,每门课程都有几个模块。
\n我的项目如下所示(使用https://ascii-tree-generator.com/制作制作):
\ngoogle-golang/\n\xe2\x94\x9c\xe2\x94\x80 .github/\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 workflows/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 ci.yml\n\xe2\x94\x9c\xe2\x94\x80 golang-getting-started/\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 module1/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 main.go\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 main_test.go\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 module2/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 trunc/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 main.go\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 main_test.go\n\xe2\x94\x9c\xe2\x94\x80 .gitignore\n\xe2\x94\x9c\xe2\x94\x80 README.md\nRun Code Online (Sandbox Code Playgroud)\n我想为*_test.go每次提交运行文件中的所有测试,但我不清楚如何从根目录 ( google-golang) 执行此操作。我认为不需要一个模块导入另一个模块,因为练习可以独立完成。这个问题有两个答案,一个建议使用子模块,另一个建议使用Go工作区,但都没有提供像我这样的新手可以学习的具体说明。
我不是在 GitHub Actions 上寻求帮助,我知道如何编写这些内容。我正在寻找一个或多个可以查找并运行测试的命令。
\n