一、 背景
最近在看 Go
源码的时候,发下部分库最早是在 x-pkg 里面的,经过一段时间迭代才进了runtime
包里面。
x-pkg 里面介绍了用途和源码地址。
我发现 x-pkg 的源码地址都在 https://go.googlesource.com, 但是我们项目里面导入某个x-pkg
库的路径确是
import "golang.org/x/sync/semaphore"
比较好奇,这import
的别名是在哪里做的,感觉是个挺冷门的知识,于是搜了下相关资料。
二、实现步骤
找到了官网相关资料: hdr-Remote_import_paths
简单说就是在你的网址里面加入如下信息。
<meta name="go-import" content="example.org git https://code.org/r/p/exproj">
go get
的时候就知道真正的git
地址是在 https://code.org/r/p/exproj
,然后去这个地址去拉取。
我curl
了https://golang.org/x/sync
看了下返回内容如下:
➜ Desktop curl --location --request GET 'https://golang.org/x/sync'
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="go-import" content="golang.org/x/sync git https://go.googlesource.com/sync">
<meta name="go-source" content="golang.org/x/sync https://github.com/golang/sync/ https://github.com/golang/sync/tree/master{/dir} https://github.com/golang/sync/blob/master{/dir}/{file}#L{line}">
<meta http-equiv="refresh" content="0; url=https://pkg.go.dev/golang.org/x/sync">
</head>
<body>
<a href="https://pkg.go.dev/golang.org/x/sync">Redirecting to documentation...</a>
</body>
</html>
demo 验证
github
创建一个 Go项目 ,然后调用go mod init fanlv.fun/gopkg
。然后随便添加一个Go Func
,方便拉取以后调用就可以了。在
fanlv.fun/gopkg
发布一个静态页面,页面内容如下:<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width" /> <meta name="go-import" content="fanlv.fun/gopkg git https://github.com/fanlv/gopkg"> <meta name="go-source" content="fanlv.fun/gopkg https://github.com/fanlv/gopkg https://github.com/fanlv/gopkg/tree/master{/dir} https://github.com/fanlv/gopkg/blob/master{/dir}/{file}#L{line}"> <title>fanlv/gopkg</title> </head> <body> <a href="https://github.com/fanlv/gopkg"> https://github.com/fanlv/gopkg</a> </body> </html>
在本地新建一个项目,然后
go get fanlv.fun/gopkg
尝试下正常。
三、总结
挺简单的一个东西。没啥好说的。