1 回答

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
該聲明var i int32 = 3.898733e+06
有效是因?yàn)榇吮磉_(dá)式中的文字是無(wú)類(lèi)型常量,并且無(wú)類(lèi)型常量是根據(jù)上下文計(jì)算的。在這種情況下,即使它被寫(xiě)為浮點(diǎn)數(shù),它在編譯時(shí)也被解釋為 int32。這不會(huì)在運(yùn)行時(shí)發(fā)生。
有幾個(gè)選項(xiàng)可以使它適用于 JSON 封送處理:
聲明
Value
為json.Number
。通過(guò)這種方式,您可以嘗試將其解析為 int64,如果失敗,則將其解析為 float64,然后轉(zhuǎn)換為 int64,希望您不會(huì)失去精度。定義一個(gè)自定義類(lèi)型并自己解組:
type LongInt int32
func (i *LongInt) UnmarshalJSON(data []byte) error {
// Parse data yourself and set the int value
// Maybe use big.Int?
}
聲明Value為float64
- 1 回答
- 0 關(guān)注
- 101 瀏覽
添加回答
舉報(bào)