Go 导入包的正确项目结构
这里的标题是我当前的Go应用程序结构,它提供静态http页面并通过websocket发送数据 在下面的结构中,我有两个包常量和main,我无法使用main包中的常量Go 导入包的正确项目结构,go,Go,这里的标题是我当前的Go应用程序结构,它提供静态http页面并通过websocket发送数据 在下面的结构中,我有两个包常量和main,我无法使用main包中的常量 Server-Client Game assets css index.css js app.js templates index.html constants server.go
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中。您必须在主文件中导入
常量包。您可以通过$GOPATH/src
目录中的路径导入自己的包,与导入任何其他非标准包一样。因此,如果您的项目位于文件夹$GOPATH/src/myproject
中,您可以像这样导入常量包:
import "myproject/constants"
给定一个导出的(大写)常量,例如SomeConstant
,您可以在主包中将其称为常量。SomeConstant
您应该有一个至少包含src
和bin
的gopath。您的项目源代码将进入src文件夹,您发布的二进制文件将进入bin文件夹
例如,如果您的go路径指向c:/go应用程序,则您的项目可能如下所示
c:/go-apps/src/Server-Client Game/ ...
如果您发布go-install
,您的二进制文件将位于c:/go-apps/bin
中。由于go还支持git存储库,您可以像这样将它们直接导入到您的项目中(假设它是公共的)
这样的语句将从github导入流行的mux包。你可以期望在你的gopath中找到它
c:/go-apps/src/github.com/gorilla/mux
此外,您可能有多个GOPATH。编译应用程序时,它将在您的gopath中查找包。如果软件包不可用,它将自动下载它们
或者,要进行安装,您可以使用go build
在当前文件夹中生成二进制文件。要下载所有依赖项而不进行编译,请使用go-get
至于文件夹结构,可以,但我通常将main放在根目录中,因为package main
和func()main
是入口点,go中每个目录只允许一个包。我不知道你在问什么。“我无法使用主包中的常量”--这是什么意思?你想干什么?什么失败了?“我应该使用围棋工作区吗?”你所说的围棋工作区是什么意思?“我能按原样工作吗?”你能按原样工作吗?这是怎么回事?如果我的项目不在我的gopath目录中,我会遵从这个原则,说只要把它放在gopath中就行了。但这取决于你。
c:/go-apps/src/github.com/gorilla/mux