@@ -4,42 +4,40 @@ import (
4
4
"crypto/rand"
5
5
"fmt"
6
6
"strings"
7
+ "strconv"
7
8
)
8
9
9
10
// go array to string is [1 2 3] for [1, 2, 3] array
10
11
// cypher expects comma separated array
11
- func arrayToString (arr interface {}) interface {} {
12
- v := arr .([]interface {})
13
- var arrayLength = len (v )
12
+ func arrayToString (arr []interface {}) string {
13
+ var arrayLength = len (arr )
14
14
strArray := []string {}
15
15
for i := 0 ; i < arrayLength ; i ++ {
16
- strArray = append (strArray , fmt . Sprintf ( "%v" , ToString (v [i ]) ))
16
+ strArray = append (strArray , ToString (arr [i ]))
17
17
}
18
- return "[" + strings .Join (strArray [:] , "," ) + "]"
18
+ return "[" + strings .Join (strArray , "," ) + "]"
19
19
}
20
20
21
- func ToString (i interface {}) interface {} {
21
+ func ToString (i interface {}) string {
22
22
if (i == nil ) {
23
23
return "null"
24
24
}
25
25
26
26
switch i .(type ) {
27
27
case string :
28
28
s := i .(string )
29
- if len (s ) == 0 {
30
- return "\" \" "
31
- }
32
- if s [0 ] != '"' {
33
- s = "\" " + s
34
- }
35
- if s [len (s )- 1 ] != '"' {
36
- s += "\" "
37
- }
38
- return s
39
- case []interface {} :
40
- return arrayToString (i )
29
+ return strconv .Quote (s )
30
+ case int :
31
+ return strconv .Itoa (i .(int ))
32
+ case float64 :
33
+ return strconv .FormatFloat (i .(float64 ), 'f' , - 1 , 64 )
34
+ case bool :
35
+ return strconv .FormatBool (i .(bool ))
36
+ case []interface {}:
37
+ arr := i .([]interface {})
38
+ return arrayToString (arr )
41
39
default :
42
- return i
40
+ panic ( "Unrecognized type to convert to string" )
43
41
}
44
42
}
45
43
0 commit comments