猿问

使用 Appengine 和 Go 时的子文件夹和包

在为 appengine 部署和/或测试 Go 项目时,appcfg.py 和 dev_appserver.py 工具用于编译项目

当所有 *.go 文件都在一个文件夹中时,这可以正常工作,但是当代码分为子文件夹时如何编译项目 - 还需要相互访问函数和常量?

在 Go 中,子文件夹根据定义是包边界,我看不出有一种方法可以让 appengine 工具在测试或部署之前从一个项目编译多个包。

关于如何解决这个问题的建议 - 除了将所有内容都保存在一个文件夹中之外,我们不胜感激。即使解决方案是一次处理一个包(文件夹),关于如何构建一个使用所有这些包的项目的快速迭代的建议也是值得赞赏的。谢谢!


慕桂英4014372
浏览 149回答 1
1回答

DIEA

这里没有魔法。只需确保您的每个 go 文件都放在一个文件夹中,而不是放在 appengine 项目的根目录中。例如:-[Project root]    app.yaml    -[packagea]        packagea.go        -[packageab]            packageab.go    -[packageb]            packageb.go在上面的示例中,包声明应如下所示:包a.go:package packageapackageab.gopackage packageab包b.gopackage packageb例如,如果同时packageb使用packageaand packageab,则将它们导入为:包b.go:import (    "packagea"    "packagea/packageab")笔记:请注意,您不能创建导入循环(例如,packagea导入packageb和packageb导入packagea):规范:进口申报导入声明声明了导入包和导入包之间的依赖关系。包直接或间接导入自身是非法的。您必须构建代码和包以避免导入循环,否则您的代码将无法编译。
随时随地看视频慕课网APP

相关分类

Go
我要回答