@@ -4,42 +4,40 @@ import (
44 "crypto/rand"
55 "fmt"
66 "strings"
7+ "strconv"
78)
89
910// go array to string is [1 2 3] for [1, 2, 3] array
1011// 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 )
1414 strArray := []string {}
1515 for i := 0 ; i < arrayLength ; i ++ {
16- strArray = append (strArray , fmt . Sprintf ( "%v" , ToString (v [i ]) ))
16+ strArray = append (strArray , ToString (arr [i ]))
1717 }
18- return "[" + strings .Join (strArray [:] , "," ) + "]"
18+ return "[" + strings .Join (strArray , "," ) + "]"
1919}
2020
21- func ToString (i interface {}) interface {} {
21+ func ToString (i interface {}) string {
2222 if (i == nil ) {
2323 return "null"
2424 }
2525
2626 switch i .(type ) {
2727 case string :
2828 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 )
4139 default :
42- return i
40+ panic ( "Unrecognized type to convert to string" )
4341 }
4442}
4543
0 commit comments