代码之家  ›  专栏  ›  技术社区  ›  Agostino

切片中的接口转换

  •  -1
  • Agostino  · 技术社区  · 6 年前

    https://play.golang.org/p/u_oz5X4aU07 )以下内容:

    func main() {
        var obj interface{}
        json.Unmarshal([]byte("[[1,2],[3,4]]"), &obj)
        val := obj.([][]int)
        fmt.Println(val)
    }
    

    有没有一个简单的方法来转换切片中的obj?

        var val [][]float64
        for r, v := range obj.([]interface{}) {
            val = append(val,nil)
            for _, w := range v.([]interface{}) {
                val[r] = append(val[r], w.(float64))
            }
        }
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Zak    6 年前

    不,最终你必须把这两片循环过来!

    https://research.swtch.com/interfaces

    Why golang struct array cannot be assigned to an interface array

    本质上,这是因为接口存储为一个2字对,一个定义类型,一个定义值。