无法弄清楚如何格式化循环打印输出的值

时间:2019-06-15 05:18:39

标签: go

我正在尝试更改CLI插件的子命令的输出,但是正在努力使其正常工作。目前,它显示了一个难看的列表。我想将其格式化为易于阅读的漂亮表。没有桌子,它工作正常……看起来很丑。在表中添加内容时会说“ ....用作值”将其破坏。

我尝试将行声明为没有运气的字符串数组。我错过了什么,不确定什么。

    for {
            select {
            case <-ticker.C:
                stats, _ := ccclient.AppStats(app.Metadata.GUID)
                table := ui.Table([]string{"Sample Time", "Instance ID", "CPU %", "Memory (MB)", "Disk (MB)", "Cell IP:port"})
                for key, value := range stats {
                    tickerObject := []string{time.Now().Format(time.RFC3339), key}
                    //ui.Say(fmt.Sprintf("%s, %s, %s, %s, %s, %s", time.Now().Format(time.RFC3339), key, fmt.Sprintf("%f", value.Stats.Usage.CPU), fmt.Sprintf("%f", (value.Stats.Usage.Mem/1024/1024)), fmt.Sprintf("%f", (value.Stats.Usage.Disk/1024/1024)), value.Stats.Host+":"+strconv.Itoa(value.Stats.Port)))}
                    table.Add(tickerObject)
                    table.Print()
                }
            case <-quit:
                ticker.Stop()
            }
        }

我希望格式化的输出看起来更整洁,相反,我会得到-

cannot use tickerObject (type []string) as type string in argument to table.Add

当前输出(使用注释掉的ui.Say行),未对齐:

  

在空间函数开发测试中收集应用程序结构任务的统计信息   Ctrl-C停止收集统计信息

     

采样时间,实例号,cpu%,内存(MB),磁盘(MB),单元ip:port   2019-06-14T23:33:42-05:00,0,0.004659,38.492188,205.914062,   169.61.179.187:61440 2019-06-14T23:33:47-05:00,0,0.004659,38.492188,205.914062,169.61.179.187:61440 2019-06-14T23:33:52-05:00,0,0.004659, 38.492188,205.914062,169.61.179.187:61440   2019-06-14T23:33:57-05:00,0,0.006533,38.492188,205.914062,   169.61.179.187:61440

我不认为表是问题,我想我只是在存储数据的方式上缺少了一个非常简单的东西。我认为表只能拉出显示字符串(或者至少我在内部文档中找到的所有示例都只调用字符串)。

1 个答案:

答案 0 :(得分:0)

感谢彼得,使用tabWriter解决了