如何使用goterm包迭代列表并绘制表?

如何使用goterm包迭代列表并绘制表?,go,command-line-interface,Go,Command Line Interface,我正试图用它来快速原型化一些东西。我在结构中有一个用户对象列表。我想输出一个标题行(works),然后迭代列表(works),并为每个用户添加一行。但是,对于下面的代码,没有任何内容呈现给控制台。没有空行。没有什么。程序刚刚返回。我已经让链接的示例只处理标题行和数据行。当我在时通过迭代来追加到表中是不起作用的。我确信我遗漏了一些非常基本的东西。我们将不胜感激。我将继续黑客攻击 func usersListOutputConsole(users *data.UserList) { userTa

我正试图用它来快速原型化一些东西。我在结构中有一个用户对象列表。我想输出一个标题行(works),然后迭代列表(works),并为每个用户添加一行。但是,对于下面的代码,没有任何内容呈现给控制台。没有空行。没有什么。程序刚刚返回。我已经让链接的示例只处理标题行和数据行。当我在时通过迭代来追加到表中是不起作用的。我确信我遗漏了一些非常基本的东西。我们将不胜感激。我将继续黑客攻击

func usersListOutputConsole(users *data.UserList) {
  userTable := tm.NewTable(0, 10, 5, ' ', 0)
  fmt.Fprintf(userTable, "ID\tName\tFull Name\tEmail\n") // the header row
  for _, user := range users.Data {
    fmt.Fprintf(userTable, "%d\t%s\t%s\t%s\n", user.ID,   user.Attributes["name"], user.Attributes["full_name"], user.Attributes["email"])
  }
  tm.Println(userTable)
  tm.Flush()
}

经过更多的测试,我发现事实上,一切都正常工作。我没有注意到goterm和Go的原生tabwriter之间的区别,前者更像是一个实际的终端程序,可以重新绘制屏幕。令人尴尬的是,我的终端窗口太小,无法输出50多行数据,需要滚动输出。在意识到这一点并发现我需要tabwriter的滚动输出后,我切换了,几分钟后一切都正常工作。如果你正在寻找一个交互式的终端程序,goterm是一个很棒的软件包。这不是我想要的,尽管我一直被它的格式化功能所吸引。简而言之,RTFM。

您必须提供更多信息,或者提供一个可复制的示例。如果您可以运行链接的示例,请直接将代码放到其中,看看会发生什么。试着在Fprintf中更改打印到stdout,看看你得到了什么。很公平。我很快就会做一个模型。我在循环中使用了spew.Dump()来验证数据是否存在。这绝对是goterm的问题(当然是我对它的使用!)@n8gard:这对我很有用。确实导入了
func main
和所有lib吗?你的函数是如何调用的?我正在创建一个完整的、可复制的示例,稍后将进行介绍。但我知道libs是有效的,因为单数据行示例确实有效。只是当我遍历一个列表并尝试在表中放入多行时,情况并非如此。我肯定我错过了一件微妙的事情。谢谢大家。