Go語言的json包提供了一個Number類型,它可以包含任意大小的整數,并實現了json.Marshaler和json.Unmarshaler接口。它表示為int64或float64,具體取決于值的大小。
當將int值分配給json.Number時,它將顯式轉換為int64。例如:
var num json.Number num = "123" fmt.Println(num.Int64())
在這個例子中,數字123被賦給num,然后調用Int64()方法將其轉換為int64類型。這將輸出:123。
當將float64值分配給json.Number時,它將顯式轉換為float64。例如:
var num json.Number num = "3.14159" f, _ := num.Float64() fmt.Println(f)
在這個例子中,數字3.14159被賦給num,并調用Float64()方法將其轉換為float64類型。這將輸出:3.14159。
要注意的是,json.Number可以同時表示int和float類型的數字。例如:
var num json.Number num = "123" f, _ := num.Float64() fmt.Println(f)
在這個例子中,數字123被賦給num,并調用Float64()方法將其轉換為float64類型。由于它是一個整數,其輸出為:123.0。
總之,json.Number類型可以方便地將整數和浮點數作為JSON值序列化和反序列化。對于需要精度控制的數值應用程序,應該使用Decimal或Rat類型,而不是json.Number類型。