我對(duì)如何布局我的 Go 項(xiàng)目以及如何構(gòu)建它感到困惑。我對(duì) Go 相當(dāng)陌生,并且相信在 <1.13 的時(shí)候 GOPATH 很重要。我使用的是 1.14,所以我相信我不必關(guān)心這一點(diǎn),并且沒(méi)有設(shè)置 GOPATH。我不(目前)在 GitHub 上托管我的代碼(這是各種文章所假設(shè)的)。我讀過(guò)很多東西,但這一切都讓我更加困惑:https://golang.org/cmd/go/#hdr-Compile_packages_and_dependencieshttps://www.wolfe.id.au/2020/03/10/starting-a-go-project/https://talks.golang.org/2014/organizeio.slide#1我已經(jīng)根據(jù)這個(gè)布置了我的項(xiàng)目:https ://github.com/golang-standards/project-layout 。(除了這個(gè)項(xiàng)目似乎使用了 Makefile。我不想寫(xiě) Makefile。我相信這應(yīng)該在沒(méi)有 Makefile 的情況下工作。我真的不想寫(xiě) Makefile。)這是結(jié)構(gòu):/src /cmd main.go /internal helper.go go.modgo.mod 看起來(lái)像這樣:module mycompany/mymodule go 1.14service.go 看起來(lái)如下 package main // 這必須被稱(chēng)為 'main'import ( "mycompany/mymodule/internal/helper")func main () { helper.greet("Jenny")}所以,如果我進(jìn)入/src并運(yùn)行,build cmd/service.go我會(huì)得到 cmd/service.go:4:2: package mycompany/mymodule/internal/helper is not in GOROOT (/usr/local/Cellar/go/1.14.5/libexec/src /mycompany/mymodule/internal/helper)我必須先編譯helper.go嗎?手動(dòng)?肯定不是。go build當(dāng)然應(yīng)該能夠構(gòu)建我的整個(gè)項(xiàng)目,對(duì)吧?包括所有依賴(lài)項(xiàng)。有人可以告訴我我錯(cuò)過(guò)了什么嗎?
1 回答

紅糖糍粑
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
當(dāng)您在go build
不指定文件路徑的情況下運(yùn)行時(shí),它將在當(dāng)前目錄的main
任何文件中查找該函數(shù).go
以啟動(dòng)。它不會(huì)構(gòu)建整個(gè)項(xiàng)目。但在這種情況下不會(huì)有問(wèn)題。
您正在導(dǎo)入錯(cuò)誤的包。要導(dǎo)入的包名mycompany/mymodule/internal
不能是mycompany/mymodule/internal/helper
.
并且要調(diào)用另一個(gè)包內(nèi)的函數(shù),它必須暴露給外部。所以你必須將函數(shù)聲明greet()
為Greet()
- 1 回答
- 0 關(guān)注
- 105 瀏覽
添加回答
舉報(bào)
0/150
提交
取消