-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathconvert.go
129 lines (106 loc) · 2.09 KB
/
convert.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
package govector
import (
"fmt"
)
// AsVector converts slices of numeric types into a Vector.
func AsVector(any interface{}) (Vector, error) {
switch x := any.(type) {
case []uint8:
return uint8ToVector(x), nil
case []uint16:
return uint16ToVector(x), nil
case []uint32:
return uint32ToVector(x), nil
case []uint64:
return uint64ToVector(x), nil
case []int:
return intToVector(x), nil
case []int8:
return int8ToVector(x), nil
case []int16:
return int16ToVector(x), nil
case []int32:
return int32ToVector(x), nil
case []int64:
return int64ToVector(x), nil
case []float32:
return float32ToVector(x), nil
case []float64:
return float64ToVector(x), nil
default:
return nil, fmt.Errorf("Unable to coerce input of type %T into vector", any)
}
}
func uint8ToVector(x []uint8) Vector {
y := make(Vector, len(x))
for i, _ := range x {
y[i] = float64(x[i])
}
return y
}
func uint16ToVector(x []uint16) Vector {
y := make(Vector, len(x))
for i, _ := range x {
y[i] = float64(x[i])
}
return y
}
func uint32ToVector(x []uint32) Vector {
y := make(Vector, len(x))
for i, _ := range x {
y[i] = float64(x[i])
}
return y
}
func uint64ToVector(x []uint64) Vector {
y := make(Vector, len(x))
for i, _ := range x {
y[i] = float64(x[i])
}
return y
}
func intToVector(x []int) Vector {
y := make(Vector, len(x))
for i, _ := range x {
y[i] = float64(x[i])
}
return y
}
func int8ToVector(x []int8) Vector {
y := make(Vector, len(x))
for i, _ := range x {
y[i] = float64(x[i])
}
return y
}
func int16ToVector(x []int16) Vector {
y := make(Vector, len(x))
for i, _ := range x {
y[i] = float64(x[i])
}
return y
}
func int32ToVector(x []int32) Vector {
y := make(Vector, len(x))
for i, _ := range x {
y[i] = float64(x[i])
}
return y
}
func int64ToVector(x []int64) Vector {
y := make(Vector, len(x))
for i, _ := range x {
y[i] = float64(x[i])
}
return y
}
func float32ToVector(x []float32) Vector {
y := make(Vector, len(x))
for i, _ := range x {
y[i] = float64(x[i])
}
return y
}
func float64ToVector(x []float64) Vector {
return Vector(x)
}