我一直在关注Google App Engine的Go教程。
根据教程,我应该创建一个根项目目录,与该项目相关的所有源文件都应进入该目录。因此,我的工作区如下所示:
/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项目感到非常困惑。我想知道的是
items is undefined
我的项目目录应该位于Go SDK的gopath目录中还是可以位于任何地方?教程没有明确说明。
gopath
Go App Engine项目的结构是什么,如何导入源文件?
您的问题的根源似乎是src目录丢失。。
src
是的,您的项目目录应该位于中GOPATH。Go希望目录结构遵循文档中描述的工作空间,其中描述了包含src目录中所有包的工作区。编译时,它在src文件夹(或pkg,如果已安装)下的gopath中查找软件包。尽管App Engine文档没有具体说明,但据我了解,该结构应与该src结构匹配。
GOPATH
目录结构的示例如下:从setting开始GOPATH=/myproject。在的目录中GOPATH,具有以下结构(以您的某些软件包为例)。
GOPATH=/myproject
/src /MyApp/app.yaml /MyApp/myappmain.go /items/items.go /router/router.go
当我构建时,通过给它MyApp文件夹运行dev appserver dev_appserver ./MyApp
dev_appserver ./MyApp
我已经通过将log.Println("<pkg>")每个软件包的init()func 进行了测试,它们都只运行一次,因为有人指出如果结构错误,这是一个问题。
log.Println("<pkg>")
init()