我有一个数组(来自JSON),它总是包含一个字符串和一个int,如下所示:["foo",42]
现在,我必须使用[]interface{}
断言arr[0].(string)
arr[1].(int)
我想知道是否有任何方法可以指定数组中预期的类型?我想象的是...... [...]{string,int}
感谢。
答案 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)
}