Go 导入包的正确项目结构

Go 导入包的正确项目结构,go,Go,这里的标题是我当前的Go应用程序结构,它提供静态http页面并通过websocket发送数据 在下面的结构中,我有两个包常量和main,我无法使用main包中的常量 Server-Client Game assets css index.css js app.js templates index.html constants server.go

这里的标题是我当前的Go应用程序结构,它提供静态http页面并通过websocket发送数据

在下面的结构中,我有两个包常量和main,我无法使用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中。

您必须在主文件中导入
常量
包。您可以通过
$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