Skip to content

Commit 4acf02d

Browse files
dev: 增加格式化方法
1 parent c207918 commit 4acf02d

File tree

2 files changed

+171
-2
lines changed

2 files changed

+171
-2
lines changed

format/string.go

+73
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,31 @@ func MustParseStrUInt64(data string) uint64 {
3030
return value
3131
}
3232

33+
// ParseStrInt str -> int
34+
func ParseStrInt(data string) (int, error) {
35+
v, err := strconv.ParseInt(data, 10, 32)
36+
if err != nil {
37+
return 0, err
38+
}
39+
40+
return int(v), nil
41+
}
42+
43+
// MustParseStrInt str -> int
44+
func MustParseStrInt(data string) int {
45+
value, err := ParseStrInt(data)
46+
if err != nil {
47+
buf := make([]byte, 4096)
48+
runtime.Stack(buf, true)
49+
log.Fatalf("parse to int failed, data=<%s> errors:\n %+v \n %s",
50+
data,
51+
err,
52+
buf)
53+
}
54+
55+
return value
56+
}
57+
3358
// ParseStrInt64 str -> int64
3459
func ParseStrInt64(data string) (int64, error) {
3560
return strconv.ParseInt(data, 10, 64)
@@ -69,3 +94,51 @@ func MustParseStrFloat64(data string) float64 {
6994

7095
return value
7196
}
97+
98+
// ParseStrIntSlice parse []string -> []int
99+
func ParseStrIntSlice(data []string) ([]int, error) {
100+
var target []int
101+
102+
for _, str := range data {
103+
id, err := ParseStrInt(str)
104+
if err != nil {
105+
return nil, err
106+
}
107+
108+
target = append(target, id)
109+
}
110+
111+
return target, nil
112+
}
113+
114+
// ParseStrInt64Slice parse []string -> []int64
115+
func ParseStrInt64Slice(data []string) ([]int64, error) {
116+
var target []int64
117+
118+
for _, str := range data {
119+
id, err := ParseStrInt64(str)
120+
if err != nil {
121+
return nil, err
122+
}
123+
124+
target = append(target, id)
125+
}
126+
127+
return target, nil
128+
}
129+
130+
// ParseStrUInt64Slice parse []string -> []uint64
131+
func ParseStrUInt64Slice(data []string) ([]uint64, error) {
132+
var target []uint64
133+
134+
for _, str := range data {
135+
id, err := ParseStrUInt64(str)
136+
if err != nil {
137+
return nil, err
138+
}
139+
140+
target = append(target, id)
141+
}
142+
143+
return target, nil
144+
}

format/string_test.go

+98-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
)
66

77
func TestParseStrInt64(t *testing.T) {
8-
value := []byte("10")
8+
value := "10"
99
got, err := ParseStrInt64(value)
1010
if err != nil {
1111
t.Errorf("failed, errors:%+v", err)
@@ -17,7 +17,7 @@ func TestParseStrInt64(t *testing.T) {
1717
}
1818

1919
func TestParseStrFloat64(t *testing.T) {
20-
value := []byte("10.10")
20+
value := "10.10"
2121
got, err := ParseStrFloat64(value)
2222
if err != nil {
2323
t.Errorf("failed, errors:%+v", err)
@@ -27,3 +27,99 @@ func TestParseStrFloat64(t *testing.T) {
2727
t.Errorf("failed, got=<%+v>, expect=<%+v>", got, 10.10)
2828
}
2929
}
30+
31+
func TestParseStrInt(t *testing.T) {
32+
value := "10"
33+
got, err := ParseStrInt(value)
34+
if err != nil {
35+
t.Errorf("failed, errors:%+v", err)
36+
}
37+
38+
if got != 10 {
39+
t.Errorf("failed, got=<%+v>, expect=<%+v>", got, 10)
40+
}
41+
}
42+
43+
func TestParseStrIntSlice(t *testing.T) {
44+
value := []string{"10", "11", "12"}
45+
got, err := ParseStrIntSlice(value)
46+
if err != nil {
47+
t.Errorf("failed, errors:%+v", err)
48+
}
49+
50+
if len(got) != len(value) {
51+
t.Errorf("failed, got=<%d>, expect=<%d>", len(got), len(value))
52+
return
53+
}
54+
55+
if got[0] != 10 {
56+
t.Errorf("failed, got=<%+v>, expect=<%+v>", got[0], 10)
57+
return
58+
}
59+
60+
if got[1] != 11 {
61+
t.Errorf("failed, got=<%+v>, expect=<%+v>", got[1], 11)
62+
return
63+
}
64+
65+
if got[2] != 12 {
66+
t.Errorf("failed, got=<%+v>, expect=<%+v>", got[1], 11)
67+
return
68+
}
69+
}
70+
71+
func TestParseStrInt64Slice(t *testing.T) {
72+
value := []string{"10", "11", "12"}
73+
got, err := ParseStrInt64Slice(value)
74+
if err != nil {
75+
t.Errorf("failed, errors:%+v", err)
76+
}
77+
78+
if len(got) != len(value) {
79+
t.Errorf("failed, got=<%d>, expect=<%d>", len(got), len(value))
80+
return
81+
}
82+
83+
if got[0] != 10 {
84+
t.Errorf("failed, got=<%+v>, expect=<%+v>", got[0], 10)
85+
return
86+
}
87+
88+
if got[1] != 11 {
89+
t.Errorf("failed, got=<%+v>, expect=<%+v>", got[1], 11)
90+
return
91+
}
92+
93+
if got[2] != 12 {
94+
t.Errorf("failed, got=<%+v>, expect=<%+v>", got[1], 11)
95+
return
96+
}
97+
}
98+
99+
func TestParseStrUInt64Slice(t *testing.T) {
100+
value := []string{"10", "11", "12"}
101+
got, err := ParseStrUInt64Slice(value)
102+
if err != nil {
103+
t.Errorf("failed, errors:%+v", err)
104+
}
105+
106+
if len(got) != len(value) {
107+
t.Errorf("failed, got=<%d>, expect=<%d>", len(got), len(value))
108+
return
109+
}
110+
111+
if got[0] != 10 {
112+
t.Errorf("failed, got=<%+v>, expect=<%+v>", got[0], 10)
113+
return
114+
}
115+
116+
if got[1] != 11 {
117+
t.Errorf("failed, got=<%+v>, expect=<%+v>", got[1], 11)
118+
return
119+
}
120+
121+
if got[2] != 12 {
122+
t.Errorf("failed, got=<%+v>, expect=<%+v>", got[1], 11)
123+
return
124+
}
125+
}

0 commit comments

Comments
 (0)