這是我的主文件(server.go):package mainimport ( "net/http" "routes")func main() { http.HandleFunc("/", routes.Handler) http.ListenAndServe(":8000", nil)}我的路由模塊在同一目錄中:package routesfunc Handler(w http.ResponseWriter, r *http.Request) { // stuff...}當我運行時,go run server.go我收到此錯誤:server.go:6:5: cannot find package "routes" in any of: /usr/local/Cellar/go/1.6/libexec/src/routes (from $GOROOT) ~/server/src/routes (from $GOPATH)當我將代碼routes.go放入我的server.go文件時,它運行良好。我無法導入模塊。我試過將$GOPATH變量設置為我的當前目錄,我試過重新排列我的項目目錄以模仿這里的目錄。我的選擇不多了。奇怪的是,一種被如此廣泛采用的語言,關于如何做幾乎所有其他語言都相對容易的事情的文檔如此糟糕。請幫我弄清楚我做錯了什么。更新:這是輸出 go envGOARCH="amd64"GOBIN=""GOEXE=""GOHOSTARCH="amd64"GOHOSTOS="darwin"GOOS="darwin"GOPATH="/Users/me/server"GORACE=""GOROOT="/usr/local/Cellar/go/1.6/libexec"GOTOOLDIR="/usr/local/Cellar/go/1.6/libexec/pkg/tool/darwin_amd64"GO15VENDOREXPERIMENT="1"CC="clang"GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"CXX="clang++"CGO_ENABLED="1"
2 回答

慕神8447489
TA貢獻1780條經驗 獲得超1個贊
“如何編寫 Go 代碼”文章是入門頁面上的推薦起點,它解釋了這一點。(感謝@elithrar)
彼得Bourgon有一個很好的寫了關于結構良好的圍棋應用。
您應該將routes
包放在一個routes
文件夾中,或者如果您的主包在路由文件夾中,您可以lib
在該文件夾中創建一個包含實際routes
包的文件夾。
文件夾結構的原因是由于 goimport
語句的工作方式??紤]到導入的工作方式,在同一文件夾中啟用多個包是不明確的。
- 2 回答
- 0 關注
- 214 瀏覽
添加回答
舉報
0/150
提交
取消