Golang Go语言中godoc -http的问题:当自定义包和标准库包重名时,会强制重定向到标准库包的文档

想从浏览器里查看自己代码的文档,设置好 GOPATH 后,运行:

> godoc -http=:6060

我有个项目自己的包名字叫 rpc ,然后我尝试访问:

http://localhost:6060/pkg/rpc

然后被强制重定向到了:

http://localhost:6060/pkg/net/rpc/


> curl -I http://localhost:6060/pkg/rpc
HTTP/1.1 301 Moved Permanently
Location: /pkg/net/rpc/
Date: Fri, 01 Apr 2016 08:05:29 GMT
Content-Type: text/plain; charset=utf-8


问题:
1. godoc 是官方的支持了看用户代码文档,还是偶然不小心的能够看到用户代码文档?
2. 如果是官方支持的话,那这个跳转是咋回事?
Golang Go语言中godoc -http的问题:当自定义包和标准库包重名时,会强制重定向到标准库包的文档


更多关于Golang Go语言中godoc -http的问题:当自定义包和标准库包重名时,会强制重定向到标准库包的文档的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang Go语言中godoc -http的问题:当自定义包和标准库包重名时,会强制重定向到标准库包的文档的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Go语言中,godoc 工具是一个非常有用的文档生成和查看工具,尤其是通过 -http 标志启动的HTTP服务器,可以方便地浏览本地Go代码的文档。对于你提到的自定义包和标准库包重名的问题,这里有一些关键点需要了解:

  1. 命名冲突:Go语言鼓励使用独特的包名以避免命名冲突。如果自定义包与标准库包重名,这通常是一个设计上的不佳实践,因为标准库包具有全局性和预期的行为,而自定义包应当有明确的命名空间。

  2. godoc行为:当godoc遇到重名的包时,它通常会优先显示标准库包的文档,因为标准库是Go语言的核心部分,而自定义包通常被视为是对标准库的补充或特定项目的实现。

  3. 解决方案

    • 重命名自定义包:最简单直接的解决方法是更改自定义包的名称,使其与标准库包不冲突。
    • 使用不同模块/路径:如果自定义包必须保持相同的名称,可以考虑将其放在不同的模块或导入路径下。
    • 自定义godoc模板:虽然这不是直接解决问题的办法,但你可以通过自定义godoc的HTML模板来更灵活地展示文档,尽管这需要一定的HTML和Go模板知识。

总之,避免命名冲突是最佳实践,而godoc的行为是基于Go语言的整体设计和标准库的优先级。

回到顶部