2017-07-06 83 views
1

我有自帶的數據結構切片訪問值出去,噴涌看起來像這樣:golang:在接口

([]interface {}) (len=1 cap=1) { 
(string) (len=1938) "value" 
} 

它的類型[]interface {}

的我如何可以打印此valuefmt,或以某種方式訪問​​它,以便我可以使用它。

+0

什麼是上下文?你想如何使用它?如果你想用'fmt'打印它,[你可以這樣做](https://play.golang.org/p/S0n2C0SJDY)。 – Adrian

+0

問題是,它似乎返回一個切片(或至少由[]圍繞的東西)。我試圖覆蓋它,但得到'不能超過值的範圍(類型界面{})' – jaxxstorm

+0

是的,我只是想分配它的東西,所以我可以'fmt'打印。 – jaxxstorm

回答

1

您可以使用類型斷言或反射與通用interface{}工作到基礎類型。你如何做到這一點取決於你的特定用例。如果你能指望interface{}是一個[]interface{}在你的榜樣,您可以:

if sl, ok := thing.([]interface{}); ok { 
    for _, val := range sl { 
     fmt.Println(val) 
     // Or if needed, coerce val to its underlying type, e.g. strVal := val.(string) 
    } 
} 

Playground link

如果你不能對底層類型的假設,你需要做的一些黑魔法使用reflect

+0

明白了,謝謝! – jaxxstorm