go - golang 模块和本地包
问题描述
我试图了解如何使用 go1.11 模块组织我的 golang 项目。我尝试了几种选择,但都没有奏效。
我在应用程序文件夹下的主包和主包使用的本地包中有一些代码。
$GOPATH
+ src
+ application/
+ main/
+ main.go
+ otherFileUnderMainPackage.go
+ aLocalPackage/
+ someCode.go
+ someCode_test.go
+ someMoreCode.go
+ someMoreCode_test.go
主包中的文件,导入../aLocalPackage
. 当我编译时go build main/*.go
它正在工作。
然后,我运行go mod init application: V.0.9.9
并获取了 go.mod 文件,但构建总是失败。我总是收到关于找不到本地包的错误:build application:V0.9.9/main: cannot find module for path _/.../src/application/aLocalPackage
. 我还尝试将本地包放在 src/ 下,将其放在 main/ 等下,但这些方法都不适合我。
模块和本地包的使用方法是什么?
谢谢。
解决方案
模块模式不支持相对导入路径。您将需要更新您的import
语句以使用完整(绝对)导入路径。
您还应该选择除application
. 您的模块路径通常应以您控制的 URL 前缀开头 - 您自己的域名或唯一路径,例如github.com/$USER/$REPO
.
推荐阅读
- python - 阅读使用 Librosa (Python) 绘制的图表并从中创建(例如)音频文件
- ui-automation - How can we fetch multiple data stored in table in karate?
- node.js - Sequelize - 从选择值插入数据作为外部 id
- preact - Preact 等价于 renderToNodeStream
- javascript - 分配后反应状态未定义
- r - 降雨径流绘图
- javascript - 如何为每个新对象将其推送到数组中,避免覆盖?JavaScript
- java - 如何以毫秒解析 ZonedDateTime
- java - 如果我们使用反射更改最终属性值,则不会抛出 UnsupportedEncodingException
- matomo - Matomo - 按浏览器版本过滤访问日志