为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕桂英4014372 2021-11-08 16:54:14
在为 appengine 部署和/或测试 Go 项目时,appcfg.py 和 dev_appserver.py 工具用于编译项目当所有 *.go 文件都在一个文件夹中时,这可以正常工作,但是当代码分为子文件夹时如何编译项目 - 还需要相互访问函数和常量?在 Go 中,子文件夹根据定义是包边界,我看不出有一种方法可以让 appengine 工具在测试或部署之前从一个项目编译多个包。关于如何解决这个问题的建议 - 除了将所有内容都保存在一个文件夹中之外,我们不胜感激。即使解决方案是一次处理一个包(文件夹),关于如何构建一个使用所有这些包的项目的快速迭代的建议也是值得赞赏的。谢谢!
查看完整描述

1 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

这里没有魔法。只需确保您的每个 go 文件都放在一个文件夹中,而不是放在 appengine 项目的根目录中。


例如:


-[Project root]

    app.yaml

    -[packagea]

        packagea.go

        -[packageab]

            packageab.go

    -[packageb]

            packageb.go

在上面的示例中,包声明应如下所示:


包a.go:


package packagea

packageab.go


package packageab

包b.go


package packageb

例如,如果同时packageb使用packageaand packageab,则将它们导入为:


包b.go:


import (

    "packagea"

    "packagea/packageab"

)

笔记:


请注意,您不能创建导入循环(例如,packagea导入packageb和packageb导入packagea):


规范:进口申报


导入声明声明了导入包和导入包之间的依赖关系。包直接或间接导入自身是非法的。


您必须构建代码和包以避免导入循环,否则您的代码将无法编译。


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信