カテゴリー: BackEnd

Go 1.19でGoDocに追加された機能

はじめに

8月2日にGo 1.19がリリースされました。Go 1.18ではGenericsを始め、大きな変更点がありましたが、Go 1.19では細かな変更が多くなっています。

今回はGo 1.19の内容で気になったGoDocの機能追加について紹介します。

Go 1.19のリリースノートはこちらです。

GoDocの機能追加

Go1.18までのGoDocは、段落やURLをリンクにするなど、非常にシンプルな機能しかありませんでした。

Go1.19では主に、

  • セクションタイトル
  • リンク
  • リスト

などが追加され、よりリッチな表現ができるようになりました。

それでは実際にこれらを使ってドキュメントを書いてみます。

セクションタイトル(Headings)

セクションタイトルを使うと、文字サイズが大きくなり、アンカーリンクを設置することができます。

セクションタイトルの書き方は、#記号+半角スペース+テキストとなっています。また、セクションタイトルは連続して書くことができません。

// パッケージ情報
package greeting

import "fmt"

// セクションタイトルのサンプル
//
// # セクションタイトル1
//
// なにか説明…
//
// # セクションタイトル2
//
// なにか説明…
//
// # これはだめ
// # これはだめ
//
// ## これもだめ
//
// 終了
func SayHello (name string) {
 fmt.Println("Hello "+name+"!")
}

ブラウザで表示すると以下のようになります。

リンク

リンクを修飾することができるようになりました。書式は以下の通りです。

[リンク名]: アドレス

ここで定義した[リンク名]をドキュメント内に埋め込むことで、リンクを含めることができます。

また、[パッケージ名]とすることで、ドキュメント内の別パッケージなどにリンクすることもできます。

// パッケージ情報
package greeting

import "fmt"

// リンクのサンプル
//
// リンク1
// “[Link No.1].”
//
// [リンク2]はこちら
//
// [io.EOF] 外部パッケージへの参照
//
// [Link No.1]: https://hoge.com/link1
// [リンク2]: https://hoge.com/link2
func SayHello (name string) {
 fmt.Println("Hello "+name+"!")
}

ブラウザで表示すると以下のようになります。

リスト

リストでは番号なしのリストと番号つきのリストを表現できます。

番号なしのリストの記述は、-+半角スペース+テキストです。同様に、番号付きのリストの記述は、数字+.+半角スペース+テキストです。

ただし、以下の制約があります。

  • 各リストの先頭に半角スペースを2ついれる
  • リスト中にはインデントを入れられない
  • 番号なしリストと番号つきリストを同じリストのまとまりに入れられない
// パッケージ情報
package greeting

import "fmt"

// リストのサンプル
//
// リスト1
//   - 項目1
//     - 項目12(リストにインデントはできない)
//   - 項目2
//   - 項目3
//
// リスト2
//   1. 項目1
//     - 項目12(リストにインデントはできない)
//   2. 項目2
//   3. 項目3
//   4. 項目4
func SayHello (name string) {
 fmt.Println("Hello "+name+"!")
}

ブラウザで表示すると以下のようになります。

パッケージの追加

また、go/doc/commentという新しいパッケージが追加されました。このパッケージはコメントの解析と再フォーマット、そして HTML、Markdown、テキストへのレンダリングのサポートを提供します。

おまけ

自作したパッケージをGoDocで表示するには、$GOROOT/srcディレクトリに含める必要があります。しかし、パッケージのコードがこのディレクトリにあると不便なので、下記のようにシンボリックリンクを作成して対応しました。

% ln -s path/to/your/package $GOROOT/src/packagename

さいごに

Go 1.19でのGoDocの変更点について紹介しました。

おすすめ書籍

Hiroki Ono

シェア
執筆者:
Hiroki Ono
タグ: golang

最近の投稿

フロントエンドで動画デコレーション&レンダリング

はじめに 今回は、以下のように…

3週間 前

Goのクエリビルダー goqu を使ってみる

はじめに 最近携わっているとあ…

1か月 前

【Xcode15】プライバシーマニフェスト対応に備えて

はじめに こんにちは、suzu…

2か月 前

FSMを使った状態管理をGoで実装する

はじめに 一般的なアプリケーシ…

3か月 前