在golang中,可以使用godoc工具來擷取註解內容。 godoc工具會從Go程式和套件文件中提取頂級聲明的首行註釋以及每個物件的相關註釋,並產生相關文檔,也可以作為一個提供線上文檔瀏覽的web伺服器。
本教學操作環境:windows10系統、GO 1.18版本、Dell G3電腦。
在golang中,可以使用godoc工具來擷取註解內容。
godoc工具
godoc 工具會從Go 程式和套件檔案中提取頂級聲明的首行註釋以及每個物件的相關註釋,並產生相關文檔,也可以作為一個提供線上文檔瀏覽的web 伺服器,Go語言官網(https://golang.google.cn/)就是透過這種形式實現的。
要注意:Go語言 1.13 版本移除了 godoc 工具,大家可以透過go get
指令來取得 godoc 工具。
go get golang.org/x/tools/cmd/godoc
由於防火牆的原因,國內的使用者可能無法透過go get 指令來取得 godoc 工具,這時候就需要大家來手動操作了。
首先從GitHub(https://github.com/golang/tools.git) 下載golang.org/x/tools 套件;
#然後將下載得到的檔案解壓縮到GOPATH 下的src\golang.org\x\tools 目錄中,沒有的話可以手動建立;
開啟GOPATH 下的src\golang .org\x\tools\cmd\godoc 目錄,在該目錄下開啟命令列工具,並執行go build 命令,產生godoc.exe 可執行檔;
最後,將產生的godoc.exe 檔案移動到GOPATH 下的bin 目錄中。 (需要把GOPATH 下的bin 目錄加到環境變數Path 中)
完成上述操作後就可以使用godoc 工具了,godoc 工具一般有以下幾種用法:
go doc package
:取得套件的文件註釋,例如go doc fmt
會顯示使用godoc 產生的fmt 套件的文件註釋;
go doc package/subpackage
:取得子套件的文件註釋,例如go doc container/list
;
go doc package function
:取得某個函數在某個套件中的文件註釋,例如go doc fmt Printf
會顯示有關fmt.Printf()
的使用說明。
godoc 工具也可以取得 Go 安裝目錄下 ../go/src 中的註解內容,並將這些註解內容整合到 web 伺服器中供我們預覽。在命令列輸入godoc -http=:6060,然後使用瀏覽器開啟 http://localhost:6060 後,就可以看到本機文件瀏覽伺服器提供的頁面。
godoc的使用
#在終端機檢視
在終端,進入要查看的套件的目錄go doc
顯示當前套件的文檔
這裡查看的是套件名稱的文檔,以及所有的函數名字跟變數類型名稱
example: go doc terminal show: package test // import "test/testdoc" 这个是a.go的包名的描述 At 20191017 by Baiyu ---a.go end--- 这个是在doc.go 文件中的内容 在Go的源代码中 在Mac系统中 在类Unix系统中 在Windows系统中 ---doc.go end--- 这个是在testgodoc.go文件的内容 package Name: test describe: 程序的入口 ---testgodoc.go end--- 这个是z.go 的包名描述 ---z.go end--- const Email ... const Baiyu = "baiyu" func H(h1 string, h2 string) (reValue string) func Test(param1 string, inter int) (k string) func Z() type Computer struct{ ... } type Person struct{ ... } BUG: 这个注释会生成在文档最后后面,同时因为紧跟着fun Z,所以在上面的func列表里面也有显示 功能: 生成Z签名 BUG: 因为前面有BUG(who)这个关键字,所以这句注释就算没有紧跟关键字不会被隐藏掉 BUG: BUG(6):格式正确,所以这句注释就算没有紧跟关键字不会被隐藏掉,前面的BUG():、BUG6:、BUG:都是不正确的BUG(who)命名
go doc <pkg>.<func>
查看pkg包下面的func函數的註釋
example: go doc test.Test terminal show: package test // import "test/testdoc" func Test(param1 string, inter int) (k string) 功能: 测试函数 参 数: param1 : 说明参数值 inter : 运算的数字 返回值: k : 返回值
如果想查看完整的源碼go doc - src <pkg>.<func>
example: go doc -src test.Test terminal show: package test // import "test/testdoc" // 功能: 测试函数 // 参 数: // param1 : 说明参数值 // inter : 运算的数字 // 返回值: // k : 返回值 func Test(param1 string, inter int) (k string) { fmt.Println("测试函数") return param1 }
在瀏覽器上查看
使用指令godoc -http=:6060
然後在開啟瀏覽器的,在url輸入localhost:6060/pkg
或127.0.0.1:6060/pkg
就可以查看到你本地的所有套件的資訊了
如果你想要找到你特定的套件名稱的話localhost:6060/pkg/<path>/<packagename></packagename></path>
或127.0.0.1: 6060/pkg/<path>/<packagename></packagename></path>
<path></path>
是你/src下套件所在的路徑
<packagename></packagename>
是套件名稱
#匯出godoc文件為HTML
使用指令godoc -url "http://localhost:6060/pkg/<pkg>/<packagename>/" > <packagename>.html</packagename></packagename></pkg>
匯出來的是純html文件,沒有樣式表,不過也有可能可以匯出,但是我目前沒有找到,如果有找到的朋友也可以交流一下
不過我也有對應的樣式檔給導出了
###下載網址https://github.com/BaiYu96/golandLearn/tree/master/learn_doc/stylefile###然後把html檔案裡面的css跟js指定的路徑修改好就可以
以上是golang怎麼取得註釋內容的詳細內容。更多資訊請關注PHP中文網其他相關文章!