包含多种特定类型的固定大小数组?

时间:2015-01-23 00:31:57

标签: arrays go

我有一个数组(来自JSON),它总是包含一个字符串和一个int,如下所示:["foo",42]

现在,我必须使用[]interface{}断言arr[0].(string) arr[1].(int)

我想知道是否有任何方法可以指定数组中预期的类型?我想象的是...... [...]{string,int}

感谢。

1 个答案:

答案 0 :(得分:0)

首先,答案是否定的。但您可以从interface{}获得您期望的类型的值。 怎么样?

package main

import (
    "encoding/json"
    "fmt"
    "github.com/mattn/go-scan"
    "log"
)

func main() {
    text := `["foo", 42]`

    var v interface{}
    err := json.Unmarshal([]byte(text), &v)
    if err != nil {
        log.Fatal(err)
    }
    var key string
    var val int
    e1, e2 := scan.ScanTree(v, "[0]", &key), scan.ScanTree(v, "[1]", &val)
    if e1 != nil || e2 != nil {
        log.Fatal(e1, e2)
    }
    fmt.Println(key, val)
}