Skip to Content

Go 2次元スライスとテーブル形式で出力

概要

2次元配列からテーブル形式で標準出力する。

標準出力イメージ

1
2
3
4
5
6
7
+------------+------------+
|  LOCATION  | POPULATION |
+------------+------------+
| Abashiri   | 3.4万人    |
| Memanbetsu | 0.5万人    |
| Kitami     | 12万人     |
+------------+------------+

結論

tablewriterを使って、Exampleに通りに書けば簡単に標準出力にテーブル表示が可能だった。

コード

README.mdのExample1 Basicの例通りすぎて説明する箇所がありませんでした。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package main

import (
	"os"

	"github.com/olekukonko/tablewriter"
)

func main() {
	// 2次元配列を用意
	location := [][]string{
		{"Abashiri", "3.4万人"},
		{"Memanbetsu", "0.5万人"},
		{"Kitami", "12万人"},
	}

	table := tablewriter.NewWriter(os.Stdout)
	table.SetHeader([]string{"location", "population"}) // テーブル表示のタイトル

	for _, v := range location {
		table.Append(v)
	}
	table.Render() // Send output
}

感想

aws cli xxx --output tableのようなテーブル形式を自前で実装する場合はどうなるのか気になり調べました。
ライブラリを使えば簡単に出力可能でした。標準出力ではなくテーブル形式での文字列として変数に収めたい場合、どのように書けばいいのかわからなかったのが課題。

参考

olekukonko/tablewriter: ASCII table in golang