在 hugo 的 go.mod 文件里面看到了居然只有域名的 go mod 导入,很奇怪,以前从来没见过:

1
2
3
require (
	gocloud.dev v0.40.0
)

通过 curl https://gocloud.dev/?go-get=1 看到了具体的元数据:

1
2
3
4
5
<html>
	<head>
		<meta name="go-import" content="gocloud.dev git https://github.com/google/go-cloud">
	</head>
</html>

仓库地址在:https://github.com/google/go-cloud,查看 go-cloud/go.mod,package 名字无误:module gocloud.dev

但是这个仓库无法通过 GitHub 的地址下载:

1
2
3
4
5
go get github.com/google/go-cloud
go: downloading github.com/google/go-cloud v0.41.0
go: github.com/google/go-cloud@upgrade (v0.41.0) requires github.com/google/go-cloud@v0.41.0: parsing go.mod:
        module declares its path as: gocloud.dev
                but was required as: github.com/google/go-cloud

而 GitHub 自身的元标签又是如下声明的:

1
<meta name="go-import" content="github.com/google/go-cloud git https://github.com/google/go-cloud.git">

go-import 元标签的格式:

1
<meta name="go-import" content="<import-prefix> <vcs> <repo-root>">
  • <import-prefix>:模块路径前缀,比如 example.com/mypkg
  • <vcs>:版本控制系统名称,常用的是 git
  • <repo-root>:代码仓库的 URL,必须支持克隆,通常是 GitHub、GitLab、或公司内部 git 服务器的地址

所以为什么 GitHub 声明为“github.com/google/go-cloud”还能正确导入?不得而知。

碎碎念 桃子