我一直在关注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 项目应该如何组织。我想知道的是
我的项目目录应该位于 Go SDK 的
gopath
目录中还是可以位于任何地方?教程没有说清楚。Go App Engine 项目的结构是什么?如何导入源文件?
最佳答案
您的问题的原因似乎是缺少 src
目录。 .
是的,您的项目目录应该在
GOPATH
中. Go 期望目录结构遵循描述 workspaces 的文档中的描述。所有包裹都位于src
目录。编译时,它会在 src 文件夹下的 gopath 中查找包(如果已安装,则为 pkg)。尽管 App Engine 文档没有具体说明这一点,但我的理解是该结构应与src
相匹配。结构。目录结构的一个例子是这样的:从设置
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/