1 回答

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果您查看 Unmarshal 的文檔。你會(huì)發(fā)現(xiàn) Unmarshal 中已知的 Numbers 類型是float64
為了將 JSON 解組為接口值,Unmarshal 將其中一項(xiàng)存儲(chǔ)在接口值中:
bool, for JSON booleans
float64, for JSON numbers
string, for JSON strings
[]interface{}, for JSON arrays
map[string]interface{}, for JSON objects
nil for JSON null
因此,當(dāng)您嘗試 Unmarshal an int 您將得到它作為 float 64。應(yīng)該先鍵入 assert 它float64 intf.(float64)然后將其轉(zhuǎn)換為int
例如 :
intf, ok := js["cols"]
if !ok {
return fmt.Errorf("tag 'cols' missing in JSON data")
}
var cols, rows int
ucols, ok := intf.(float64)
if !ok {
return fmt.Errorf("tag 'cols' cannot be converted to float64")
}
cols = int(ucols)
- 1 回答
- 0 關(guān)注
- 269 瀏覽
添加回答
舉報(bào)