2017-04-20 52 views
-1

由於這裏的標題是我當前的Go應用程序的結構,該應用程序服務於靜態http頁面,並通過websocket發送數據。正確的導入包的項目結構

在下面的結構中,我有2包常量和主,我無法使用主包中的常量。

Server-Client Game 
    assets 
     css 
      index.css 
     js 
      app.js 
     templates 
      index.html 
    constants 
     server.go 
     game.go 
    main 
     main.go 
     hub.go 
     player.go 

我應該使用Go工作區嗎?或者我能按原樣工作?

我的項目目前不在我以前稱爲'工作區'的GoPath src中。

+2

我不知道你在問什麼。 「我無法使用主包中的常量」 - 這是什麼意思?你想做什麼?什麼失敗? 「我應該使用Go工作區嗎?」 Go工作區是什麼意思? 「我能按原樣工作嗎?」你能得到現在的工作嗎?它怎麼樣? – Flimzy

回答

3

你應該有一個至少應該包含srcbin的gopath。您的項目源代碼將進入src文件夾,您發佈的二進制文件將進入bin文件夾。例如,如果您的go path指向c:/ go-apps,那麼您的項目可能如下所示。 。 。

c:/go-apps/src/Server-Client Game/ ... 

如果發出go install,您的二進制文件將在c:/go-apps/bin。自走還支持Git倉庫,你可以直接將其導入到你的項目是這樣的(假設它是公開的)

import "github.com/gorilla/mux" 

如下語句會從GitHub導入流行MUX包。你可以期望在你的食譜中找到這個

c:/go-apps/src/github.com/gorilla/mux 

你也可能有多個gopaths。當你編譯一個應用程序時,它會在你的gopath中查找這個包。如果軟件包不可用,它會自動下載它們。

或者安裝,您可以使用go build在當前文件夾中構建二進制文件。簡單地下載所有的依賴關係而不用編譯使用go get

爲文件夾結構,是的,這應該是很好,但我通常把我的主要的根目錄,因爲package mainfunc() main爲切入點,只有一個包是每個目錄的允許去。

1

你必須import你的constants包在你的主要文件。通過您的$GOPATH/src目錄中的路徑導入您自己的軟件包與其他任何非標準軟件包相同。所以,如果你的項目位於該文件夾中$GOPATH/src/myproject,你會導入您的常量包像這樣:

import "myproject/constants" 

並給予導出(大寫)常數如SomeConstant,您可以在您的主包裝中將其稱爲constants.SomeConstant

+0

如果我的項目不在我的gopath目錄中? – Higeath

+0

我會在這件事上順從這件事,並說只是把它放在gopath。這取決於你。 https://softwareengineering.stackexchange.com/questions/271324/is-having-source-code-for-a-go-project-outside-gopath-a-bad-idea – RayfenWindspear