27

我试图将特定的本地 go 文件作为文档网页提供,但无法做到。

官方 godoc 文档说:

使用 -http 标志(即 godoc 命令),它作为 Web 服务器运行并将文档显示为网页。

user_me$ godoc -http=:6060

这确实会创建类似于 go 页面的内容,但它不会呈现我想要呈现的特定文件。所以我试图提供我想要的文件的名称:

user_me$ godoc -http=:6000 hello.go

但是,它只是回复:

usage: godoc package [name ...]
    godoc -http=:6060
  -ex=false: show examples in command line mode
  -goroot="/usr/local/go": Go root directory
  -html=false: print HTML in command-line mode
  -http="": HTTP service address (e.g., ':6060')
  -httptest.serve="": if non-empty, httptest.NewServer serves on this address and blocks
  -index=false: enable search index
  -index_files="": glob pattern specifying index files;if not empty, the index is read from these files in sorted order
  -index_throttle=0.75: index throttle value; 0.0 = no time allocated, 1.0 = full throttle
  -links=true: link identifiers to their declarations
  -maxresults=10000: maximum number of full text search results shown
  -notes="BUG": regular expression matching note markers to show
  -play=false: enable playground in web interface
  -q=false: arguments are considered search queries
  -server="": webserver address for command line searches
  -src=false: print (exported) source in command-line mode
  -tabwidth=4: tab width
  -templates="": directory containing alternate template files
  -timestamps=false: show timestamps with directory listings
  -url="": print HTML for named URL
  -v=false: verbose mode
  -write_index=false: write index to a file; the file name must be specified with -index_files
  -zip="": zip file providing the file system to serve; disabled if empty

我也试过:

user_me$ godoc -url="localhost:8080" hello.go

但它没有用。

我也试过:

godoc -server=localhost:8080 hello.go

但它回答说:

2014/07/01 10:45:56 open /usr/local/go/src/pkg/hello.go: no such file or directory

我什至尝试只生成 html 本身:

godoc -html hello.go > hello.html

与上述相同的错误。

我也试过(因为它抱怨 pkg 目录中没有文件):

godoc -html -goroo=$GOPATH hello.go > hello.html

最后,我放弃了。我不知道这个 godoc 是如何工作的。我安装了 hello.go 程序,以便工作区的 pkg 文件中有一些内容。您如何使用您的代码文档生成网页?

4

5 回答 5

23

godoc 对包和类型名称进行操作,而不是文件名。

例如,要了解io/ioutil包:

  • 文本输出:godoc io/ioutil

  • 只是ReadAll功能:godoc io/ioutil ReadAll

  • 在 HTML 中:godoc -html io/ioutil ReadAll

  • 在浏览器中:

    • godoc -http=:6060
    • 单击包并从那里导航
    • 或直接前往http://localhost:6060/pkg/io/ioutil#ReadAll

要查看您自己代码的文档,它必须包含在您的GOPATH.

假设您的GOPATHcontains$HOME/go/src和您感兴趣的文件是$HOME/go/src/hey/world/doc.go,您将运行:

godoc hey/world

...或以 HTTP 模式启动 godoc 并浏览到http://localhost:6060/pkg/hey/world

于 2014-07-01T16:57:22.147 回答
8

默认情况下,godoc查看它通过 $GOROOT 和 $GOPATH 找到的包。因此,鉴于您的包在 Go 工作区中,即在 GOPATH 中,您可以运行

godoc fmt

它打印出 fmt 包的文档。

如果你想为你的包生成文档foo$GOPATH/src/github.com/abcd/foo你应该运行

godoc github.com/abcd/foo

使用该-http标志,godoc 作为 Web 服务器运行并将文档显示为网页。

godoc -http=:6060

现在http://localhost:6060/pkg/github.com/abcd/foo在浏览器中导航到以网页形式查找文档。

-play标志可用于在 Web 界面中启用 Playground。

于 2016-12-27T05:19:19.890 回答
2

显示为您自己的代码生成的 HTML 文档

步骤 1) 在命令行启动文档 Web 服务器,即:

C:\>godoc -http=:6060

步骤 2) 打开浏览器并使用您的代码所在文件夹的显式 url。

URL 结构来自您的 GOPATH 下的文件夹名称。

例如:

如果我的 GOPATH 是c:\go并且我有代码c:\go\src\myfolder\mysubfolder

我将使用的 URL 是http://localhost:6060/pkg/myfolder/mysubfolder,这将在其中显示 .go 文件的 HTML 页面

你也可以使用 URL http://localhost:6060/pkg/myfolder,它会有一个链接到mysubfolder

笔记:

于 2018-06-26T02:23:16.527 回答
1

独立运行godoc对我有用,但速度非常慢,因为它为标准库中的每个包生成文档,而我只关心我正在处理的本地包。为此,如果您的包位于名为 的文件夹中something,您可以移动该文件夹,使其如下所示:

godoc/src/something

然后,进入godoc文件夹,运行

godoc -goroot .

然后,浏览到localhost:6060

于 2021-04-23T03:25:01.977 回答
0

在 linux 上,假设您已将 cd 放入要阅读文档的包中。

如果您使用的是 go 模块,则可以运行以下命令

godoc -http=:6060 & xdg-open http://localhost:6060/pkg/$(go list -m)

-m即使根模块目录不包含任何.go文件,它也使用该标志来获取包路径。

如果你还没有使用模块,你可以运行,

godoc -http=:6060 & xdg-open http://localhost:6060/pkg/$(go list -f "{{.ImportPath}}")

请注意,-m如果目录中没有.go文件,则与此命令不同,它将无法正常工作。

检查https://golang.org/pkg/cmd/go/internal/list/go list的子命令帮助

于 2021-07-09T14:12:35.907 回答