Kamuycikap - SentenceDataBase

日々の勉強の記録を気分で書き綴るブログ

Go言語1.17でgodocを利用する

Go言語 1.17でgodocパッケージを利用する

バージョン1.16で利用していたgodoc利用を1.17で使おうとしてハマったので備忘録
今回は事情あってWindows上の話
※考え方はLinuxでも一緒

事前条件

すでにGO言語がインストールされ、goコマンド及びgo installでインストールしたパッケージの実行ファイルにコマンドプロンプトでアクセスできる事。
さらに、自分がソース管理しているディレクトリのパスを把握しておく事

> go version
go version go1.17.2 windows/amd64

上記の通りバージョン表示されない場合は、正しくgo言語がセットアップされていない。

GOROOTの確認
> go env

とすると、Go言語に関係する環境変数の設定値がズラッと並ぶ。
その中に、GOROOTがあるはず。
意図的に変えてなければ、下記のデフォルト値が設定されているはず。

GOROOT=C:\Program Files\Go
自分がソース管理しているディレクト

仮に、下記のディレクトリに自作Goソース(パッケージ)を配置しているものとする

C:\mygolang\src\
  ┃
  ┠ pkg01
  ┃ ┠ go.mod 
  ┃ ┗ pkg01.go 
  ┃
  ┠ pkg02
  ┃ ┠ go.mod 
  ┃ ┗ pkg02.go 
  ┃

godocインストール

> go install github.com/golang/tools/tree/master/godoc@latest

バージョン1.17からは、積極的にinstallでのパッケージ導入が推奨されている模様。
結果、環境変数GOPATH配下のbinディレクトリに入れられる。

※2021/12/21 追記
Chromebookにインストールしようとしたら、上記のコマンドではだめだと怒られた。。。
下記のコマンドでインストールした。
Linuxでも同じ様な結果になるかもしれない。

$ go get golang.org/x/tools/cmd/godoc

GOROOT配下のsrcディレクトリにシンボリックリンク作成

godocにドキュメントとして認識してもらうため、GOROOT直下にあるsrcディレクトリに、自分がソース管理しているディレクトリのシンボリックリンクを作成する。
仮にシンボリック名をworkspaceとする。

> cd "C:\Program Files\Go\src"
> mklink /d workspace "C:\mygolang\src\"

上記は、Windows10のコマンドプロンプトでのシンボリックリンク作成コマンド

godoc起動

コマンドプロンプトからgodocを起動する

> godoc -http=:8080

URL入力

godocの起動ができたら、Webブラウザでgodocページにアクセスしてみる

http://localhost:8080/pkg/workspace/

pkgというディレクトリ指定に違和感があるが、内部的にはGOROOT直下のsrcディレクトリと置き換えられる模様。
うまく行けば、下記のようなWeb画面が表示されるはず
下記画面に表示されているのは、私がテストとしてあれこれ試したGo言語プログラム(パッケージ)

f:id:kamuycikap:20211115155607p:plain
godoc実行後のサンプル画面

HTMLで保存するには?

godocで表示されるHTMLをローカルに保存するにはどうすればいいか?
その答えは、Webページをダウンロードすればいい。
ただし、Windowsの場合、wgetが標準でインストールされていないので、Windowsの上で動くwgetをどうにかしてインストールするか・・・使った事はないがbitsadminと呼ばれるWindows上のwget代替えコマンドを利用する。

以下、wgetバージョン。
上記説明の通り、Windows版のwgetを入手して利用できるようにしておく事。

> godoc -http=localhost:8080 &
> wget -r -np http://localhost:8080/pkg/workspace