【发布时间】:2021-05-24 21:50:44
【问题描述】:
我创建了github.com 项目qjson/qjson-go,其中包含包名称qjson,您可以看到here。我这样命名 github 项目是因为 github.com/qjson/ 包含其他不同语言的项目(例如 qjson-c)。
很遗憾,当我尝试将项目导入为github.com/qjson/qjson-go 时出现以下错误:
$ go mod tidy
go: finding module for package github.com/qjson/qjson-go
go: downloading github.com/qjson/qjson-go v0.0.0-20210128102242-170c47e2db46
github.com/xxx/xxx imports
github.com/qjson/qjson-go: module github.com/qjson/qjson-go@latest found (v0.0.0-20210128102242-170c47e2db46), but does not contain package github.com/qjson/qjson-go
我显然做错了。我知道,由于 import 声明,我们应该使用 gjson-go 作为包标识符。
我必须怎么做才能将 git 项目命名为 qjson-go 和包 qjson ?
我假设一种解决方案是在qjson-go 内创建一个名为qjson 的子目录,并将所有包文件移动到其中。然后用户将import "github.com/qson/qson-go/qjson"。那是对的吗 ?是否有另一种避免口吃的解决方案?
【问题讨论】:
-
它应该像您最初描述的那样工作。还有其他已知模块使用相同的命名方案,例如github.com/opentracing/opentracing-go。
-
只是猜测:
qjson-go在 Go 中不是一个有效的标识符,因为-是一个运算符。您必须在 import 语句中重命名模块。 -
@UlrichEckhardt 这不是解释,因为模块 opentracing-go 在名称和模块名称中也有一个 -。
-
没错,@chmike,刚刚也检查过了。我想知道将
opentracing-go变成opentracing的机制是什么。 -
两个包之间的一个区别是你的包的实际代码在
qjson子目录中,而 opentracing-go 从存储库根目录开始。你试过import "github.com/qson/qson-go/qjson"吗?
标签: go