这里的标题是我当前的Go app结构,它提供静态http页面并通过websocket发送数据。
在下面的结构中,我有2个包常量和main,我无法使用主包中的常量。
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' workspace'。
答案 0 :(得分:3)
你应该有一个至少应包含src
和bin
的gopath。您的项目源代码将进入src文件夹,您发布的二进制文件将进入您的bin文件夹。
例如,如果你的go路径指向c:/ go-apps,那么你的项目可能看起来像这样。 。
c:/go-apps/src/Server-Client Game/ ...
如果您发出go install
,您的二进制文件将位于c:/go-apps/bin
。既然go也支持git存储库,你可以直接将它们导入到你的项目中(假设它是公共的)
import "github.com/gorilla/mux"
这样的语句将从github导入流行的mux包。你可以期待在你的gopath中找到这个
c:/go-apps/src/github.com/gorilla/mux
你也可能有多个gopaths。当你编译一个应用程序时,它会在你的gopath中寻找这个包。如果包不可用,它将自动下载它们。
或者去安装,你可以使用go build
在当前文件夹中构建二进制文件。简单地下载所有依赖项而不编译使用go get
。
至于文件夹结构,是的应该没问题,但我通常把我的主要放在根目录中,因为package main
和func() main
是入口点,每个目录只允许一个包去。
答案 1 :(得分:1)
您必须在主文件中import
constants
个包。您可以通过$GOPATH/src
目录中的路径导入自己的包,与任何其他非标准包一样。因此,如果您的项目位于文件夹$GOPATH/src/myproject
中,您将导入常量包,如下所示:
import "myproject/constants"
给出导出的(大写)常量,例如SomeConstant
,您可以在主包中将其称为constants.SomeConstant
。