-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathnumber.go
134 lines (120 loc) · 2.35 KB
/
number.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
//Copyright 2018 The axx Authors. All rights reserved.
package bast
import (
"strconv"
)
//Int is auto handle string to int
type Int int
//UnmarshalJSON JSON UnmarshalJSON
func (c *Int) UnmarshalJSON(b []byte) error {
var err error
if b != nil && len(b) > 0 {
var t int
s := string(b)
if s != "" && s != "\"\"" {
if b[0] == '"' {
s = s[1 : len(s)-1]
}
t, err = strconv.Atoi(s)
if err == nil {
*c = Int(t)
}
}
}
return err
}
//Int64 is auto handle string to int64
type Int64 int64
//UnmarshalJSON JSON UnmarshalJSON
func (c *Int64) UnmarshalJSON(b []byte) error {
if b != nil && len(b) > 0 {
s := string(b)
if s != "" && s != "\"\"" {
if b[0] == '"' {
s = s[1 : len(s)-1]
}
t, err := strconv.ParseInt(s, 10, 64)
if err != nil {
return err
}
*c = Int64(t)
}
}
return nil
}
//UInt is auto handle string to uint
type UInt uint
//UnmarshalJSON JSON UnmarshalJSON
func (c *UInt) UnmarshalJSON(b []byte) error {
if b != nil && len(b) > 0 {
s := string(b)
if s != "" && s != "\"\"" {
if b[0] == '"' {
s = s[1 : len(s)-1]
}
t, err := strconv.ParseUint(s, 10, 0)
if err != nil {
return err
}
*c = UInt(t)
}
}
return nil
}
//UInt64 is auto handle string to uint
type UInt64 uint64
//UnmarshalJSON JSON UnmarshalJSON
func (c *UInt64) UnmarshalJSON(b []byte) error {
if b != nil && len(b) > 0 {
s := string(b)
if s != "" && s != "\"\"" {
if b[0] == '"' {
s = s[1 : len(s)-1]
}
t, err := strconv.ParseUint(s, 10, 0)
if err != nil {
return err
}
*c = UInt64(t)
}
}
return nil
}
//Float32 is auto handle string to float32
type Float32 float32
//UnmarshalJSON JSON UnmarshalJSON
func (c *Float32) UnmarshalJSON(b []byte) error {
if b != nil && len(b) > 0 {
s := string(b)
if s != "" && s != "\"\"" {
if b[0] == '"' {
s = s[1 : len(s)-1]
}
t, err := strconv.ParseFloat(s, 32)
if err != nil {
return err
}
*c = Float32(t)
}
}
return nil
}
//Float64 is auto handle string to float64
type Float64 float64
//UnmarshalJSON JSON UnmarshalJSON
func (c *Float64) UnmarshalJSON(b []byte) error {
if b != nil && len(b) > 0 {
s := string(b)
if s != "" && s != "\"\"" {
if b[0] == '"' {
s = s[1 : len(s)-1]
}
t, err := strconv.ParseFloat(s, 64)
if err != nil {
return err
}
*c = Float64(t)
}
}
return nil
}