【问题标题】:Package structure for Go App Engine ProjectGo App Engine 项目的包结构
【发布时间】:2014-03-13 21:57:18
【问题描述】:

我一直在关注Google App Engine's Go Tutorial

根据教程,我应该创建一个根项目目录,所有与项目相关的源文件都应该放在这个目录中。因此,我的工作空间如下所示:

/MyProject
 /router
  router.go
 /items
  items.go

当我尝试像这样在 router.go 中引用 items.go 时:

router.go

import(
    "items"
)

func itemsHandler(writer http.ResponseWriter, request * http.Request){
    anItem := items.Item{Id: 245,Name: "Chocolate",Price: 1.50};
}

应用程序无法编译,因为items is undefined,现在我对 Google App Engine 上的 Go 项目应该如何组织感到非常困惑。我想知道的是

  1. 我的项目目录应该位于 Go SDK 的 gopath 目录中还是可以位于任何地方?教程没有说明这一点。

  2. Go App Engine 项目的结构是什么?如何导入源文件?

【问题讨论】:

    标签: google-app-engine go


    【解决方案1】:

    您的问题的原因似乎是缺少src 目录。 .

    1. 是的,您的项目目录应该在GOPATH 中。 Go 期望目录结构遵循描述workspaces 的文档中的描述,所有包都位于src 目录中。编译时,它会在 src 文件夹下的 gopath 中查找包(如果已安装,则为 pkg)。虽然 App Engine 文档没有具体说明这一点,但我的理解是该结构应该与 src 结构匹配。

    2. 目录结构的一个例子是这样的:从设置GOPATH=/myproject开始。在GOPATH的目录下,有如下结构(以你的一些包为例)。

      /src
       /MyApp/app.yaml
       /MyApp/myappmain.go
       /items/items.go
       /router/router.go
      

    当我构建时,我通过给它 MyApp 文件夹 dev_appserver ./MyApp 来运行开发应用程序服务器

    我已经通过在每个包 init() func 中添加 log.Println("<pkg>") 来测试这一点,它们都只运行一次,因为有些人表示如果你的结构错误,这是一个问题。

    【讨论】:

      猜你喜欢
      • 2010-09-08
      • 1970-01-01
      • 2016-06-07
      • 2011-05-31
      • 2020-01-16
      • 1970-01-01
      • 2012-09-30
      • 2012-09-04
      • 1970-01-01
      相关资源
      最近更新 更多