适用于导入包的项目结构

时间:2017-04-20 21:18:58

标签: go

这里的标题是我当前的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'。

2 个答案:

答案 0 :(得分:3)

你应该有一个至少应包含srcbin的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 mainfunc() main是入口点,每个目录只允许一个包去。

答案 1 :(得分:1)

您必须在主文件中import constants个包。您可以通过$GOPATH/src目录中的路径导入自己的包,与任何其他非标准包一样。因此,如果您的项目位于文件夹$GOPATH/src/myproject中,您将导入常量包,如下所示:

import "myproject/constants"

给出导出的(大写)常量,例如SomeConstant,您可以在主包中将其称为constants.SomeConstant