2017-01-01 83 views
0

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

我试图给每个接口调用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

这是一个坏问题。发布后不久,我意识到数组显然是空的,因为RouteList被调用时没有接收器Handler。这是通过简单地修复:

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