golang:访问接口片段中的值

时间:2017-07-06 16:19:29

标签: go

我有一个像go-spew这样的数据结构:

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

类型为[]interface {}

如何使用value打印此fmt,或以某种方式访问​​它以便我可以使用它。

1 个答案:

答案 0 :(得分: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做一些黑魔法。