我正在學習 Go與 Google Go的專業化編程。它有幾門課程,每門課程都有幾個模塊。
我的專案如下所示(使用https://ascii-tree-generator.com/ 制作):
google-golang/
├─ .github/
│ ├─ workflows/
│ │ ├─ ci.yml
├─ golang-getting-started/
│ ├─ module1/
│ │ ├─ main.go
│ │ ├─ main_test.go
│ ├─ module2/
│ │ ├─ trunc/
│ │ │ ├─ main.go
│ │ │ ├─ main_test.go
├─ .gitignore
├─ README.md
我想*_test.go為每次提交運行檔案中的所有測驗,我不清楚如何從根目錄 ( google-golang) 執行此操作。我認為不需要一個模塊匯入另一個模塊,因為練習可以獨立完成。這個問題有兩個答案,一個建議使用子模塊,另一個建議使用 Go 作業區,但都沒有提供像我這樣的新手可以學習的具體說明。
我不是在 GitHub Actions 上尋求幫助,我知道如何撰寫這些。我正在尋找一個或多個可以找到并運行測驗的命令。
uj5u.com熱心網友回復:
您似乎對模塊是什么感到困惑。經驗法則是,一個go.mod檔案等于一個模塊。去維基, gomod:
模塊由 Go 源檔案樹定義,在樹的根目錄中有一個 go.mod 檔案。
根據您的問題中顯示的目錄樹go.mod,看不到檔案,因此沒有 Go 模塊。事實上,如果您嘗試從google-golang或運行模塊感知命??令,golang-getting-started您將擁有:
go:在當前目錄或任何父目錄中找不到 go.mod 檔案;參見“去幫助模塊”
如果您想從多模塊存盤庫的根目錄運行所有測驗,正如您的問題標題所說,使用 Go 1.17,您可以:
- 初始化子模塊:
$ cd google-golang/golang-getting-started/module1
$ go mod init example.com/module1
$ cd ../module2
$ go mod init example.com/module2
- 使用來自多模塊專案根目錄的Cerise Limón 建議的技巧
$ cd google-golang
$ find . -name go.mod -execdir go test ./... \;
如果您實際上并不關心將子存盤庫保留為單獨的模塊,則可以在根存盤庫中初始化一個模塊并從那里運行所有測驗:
$ cd google-golang # or google-golang/golang-getting-started/
$ go mod init example.com/mainmod
$ go test ./...
...然而,即使這個 hack 現在有效,它也沒有多大意義,因為您命名的存盤庫在每個檔案中moduleN都有main.go檔案,它們的包應該被命名為main。所以它們確實被組織為單獨的子模塊。
uj5u.com熱心網友回復:
嘗試:去測驗./...
./... 遞回查找所有檔案
如果你想做更多,可以學習 go:generate https://go.dev/blog/generate
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/373852.html
