← Go コース
44. fmt.Stringer — 表示方法を自分で定義する
fmt パッケージは、表示する値が String() string というメソッドを持っていれば、それを呼んで文字列化します。このメソッドを定める標準インターフェースが fmt.Stringer です。自分の型に String() メソッドを実装すると、fmt.Println や %v での表示を自分好みの見た目に変えられます。
ここでも Go の暗黙実装が効いています。fmt.Stringer を「実装します」と宣言する必要はなく、String() string メソッドを持たせるだけで fmt が自動的に認識します。下の例の Color は String() を持つので、Println に渡すとフィールドの羅列ではなく 16 進カラーコードのような分かりやすい文字列で表示されます。
Stringer は、ログ出力やデバッグ表示を読みやすくしたいときの定番です。同じ発想で、エラーには Error() string(error インターフェース)、独自の書式制御には fmt.Formatter など、fmt はいくつかのインターフェースを認識します。型に「自分の文字列表現」を持たせることで、表示する側のコードを変えずに見た目を整えられます。
▶ サンプルコードを実行してみよう(自由に書き換えてOK)
Go