在Go中列表中打印列表。循环麻烦

时间:2017-01-01 07:34:05

标签: linux go

尝试从网络命名空间中打印路由列表。 netlink.RouteList函数需要Interface类型。 LinkList()收集所有接口的列表。

我试图用每个接口调用RouteList并打印它的输出。 RouteList返回类型Route,我试图打印int LinkIndex。

看起来好像是我的循环

  for j := range rt {
    log.Printf("Route: %d : %d",rt[j].LinkIndex)
  }

由于某种原因不能执行,在那里运行另一个Printf测试不会产生任何结果。

为什么不会调用此循环?

func (h *NSHandle) showInts() {
  nh := (*netlink.Handle)(h) //cast required
  int, err := nh.LinkList()
  if err != nil {
      log.Fatal(err)
  }
  log.Printf("Namespace Ints:")
  for i, r := range int {
      log.Printf("%d: %s", i, r.Attrs().Name)
      rt, err := netlink.RouteList(r,-1)
      if err != nil {
        log.Fatal(err)
      }
      for j := range rt {
        log.Printf("Route: %d : %d",rt[j].LinkIndex)
      }
  }
}

1 个答案:

答案 0 :(得分:1)

这是一个糟糕的问题。发布后不久,我意识到数组显然是空的,因为在没有接收器Handler的情况下调用了RouteList。这只是简单地解决了:

for i, r := range rl {
    log.Printf("%d: %s", i, LinkIndex)
  }