猿问

Go App Engine 项目的包结构

我一直在关注Google App Engine 的 Go 教程。


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


/MyProject

 /router

  router.go

 /items

  items.go

当我尝试像这样在 router.go 中引用 items.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 项目应该如何组织感到非常困惑。我想知道的是


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


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


慕尼黑的夜晚无繁华
浏览 365回答 1
1回答

白衣染霜花

您的问题的原因似乎是缺少src目录。.是的,您的项目目录应该在GOPATH.&nbsp;Go 期望目录结构遵循描述工作区的文档中所述,所有包都位于src目录中。编译时,它会在 src 文件夹(或 pkg 如果已安装)下的 gopath 中查找包。虽然 App Engine 文档没有具体说明这一点,但我的理解是结构应该与src结构相匹配。目录结构的一个例子是这样的:从 setting 开始GOPATH=/myproject。在 的目录中GOPATH,具有以下结构(以您的一些包为例)。/src &nbsp;/MyApp/app.yaml &nbsp;/MyApp/myappmain.go &nbsp;/items/items.go &nbsp;/router/router.go当我构建时,我通过给它 MyApp 文件夹来运行 dev appserver&nbsp;dev_appserver ./MyApp我已经通过放入log.Println("<pkg>")每个包init()func进行了测试,并且它们都只运行一次,因为有些人表示如果结构错误,这是一个问题。
随时随地看视频慕课网APP

相关分类

Go
我要回答