google-app-engine - Go App Engine 项目的包结构

标签 google-app-engine go

我一直在关注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 未定义 现在我很困惑 Google App Engine 上的 Go 项目应该如何组织。我想知道的是

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

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

最佳答案

您的问题的原因似乎是缺少 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

我已经通过将 log.Println("<pkg>") 进行了测试在每个包裹中init() func,它们都只运行一次,因为有些人表示如果你的结构有误,就会出现问题。

关于google-app-engine - Go App Engine 项目的包结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22391847/

相关文章:

python - google app engine - ndb 查询只获取 python 中的几列

google-app-engine - Appengine 的数据存储 Cursor 永远不会改变

go - golang 中的垃圾收集——它是如何发生的?

Go - 集成测试使用测试数据库连接

python - Google App Engine URL 处理程序运行时出错

java - 错误 "The first module you upload to a new application must be the ' 默认'模块”

python - 保存memcached数据后,在GAME上可以立即使用吗?

python - AuthSub 问题

Golang ICMP 数据包发送

json - 将多个 JSON 类型解析为同一个结构体