Goで列を揃えて出力する方法を教えてください。
下記のコードを実行した場合、
サンプルソース
go
1package main 2 3import ( 4 "fmt" 5) 6 7type Cell struct { 8 key string 9 value int 10} 11 12type Row struct { 13 cells []Cell 14} 15 16func main() { 17 row1 := Row{ 18 []Cell{ 19 Cell{"a", 1}, 20 Cell{"b", 2}, 21 Cell{"c", 3}, 22 }, 23 } 24 25 row2 := Row{ 26 []Cell{ 27 Cell{"a", 1}, 28 Cell{"b", 2}, 29 Cell{"c", 3}, 30 Cell{"d", 4}, 31 }, 32 } 33 34 row3 := Row{ 35 []Cell{ 36 Cell{"a", 1}, 37 Cell{"c", 3}, 38 Cell{"d", 4}, 39 }, 40 } 41 42 hoge := []Row{row1, row2, row3} 43 44 for _, r := range hoge { 45 for _, c := range r.cells { 46 fmt.Printf("%s,", c.key) 47 48 } 49 fmt.Println() 50 51 for _, c := range r.cells { 52 fmt.Printf("%d,", c.value) 53 } 54 fmt.Println() 55 } 56} 57
出力結果は、
text
1a,b,c, 21,2,3, 3a,b,c,d, 41,2,3,4, 5a,c,d, 61,3,4,
となりますが、
次のように、
- 1行目は、row1, row2, row3 に存在するすべての key を出力
- 2行目以降は、ヘッダの key に応じた値を出力
とし、次のような結果を期待しています。
text
1a,b,c,d, 21,2,3,, 31,2,3,4, 41,,3,4,
どのようなコードにすれば、列を揃えて出力することができるのでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/12 16:09
2019/11/12 16:38 編集
2019/11/12 16:43
2019/11/19 03:14 編集