2017-01-01 70 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) 
    }