Source file
src/simd/string.go
1
2
3
4
5
6
7 package simd
8
9 import (
10 "internal/strconv"
11 )
12
13 type number interface {
14 ~int | ~int8 | ~int16 | ~int32 | ~int64 | ~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr | ~float32 | ~float64
15 }
16
17 func sliceToString[T number](x []T) string {
18 s := ""
19 pfx := "{"
20 for _, y := range x {
21 s += pfx
22 pfx = ","
23 switch e := any(y).(type) {
24 case int8:
25 s += strconv.Itoa(int(e))
26 case int16:
27 s += strconv.Itoa(int(e))
28 case int32:
29 s += strconv.Itoa(int(e))
30 case int64:
31 s += strconv.Itoa(int(e))
32 case uint8:
33 s += strconv.FormatUint(uint64(e), 10)
34 case uint16:
35 s += strconv.FormatUint(uint64(e), 10)
36 case uint32:
37 s += strconv.FormatUint(uint64(e), 10)
38 case uint64:
39 s += strconv.FormatUint(uint64(e), 10)
40 case float32:
41 s += strconv.FormatFloat(float64(e), 'g', -1, 32)
42 case float64:
43 s += strconv.FormatFloat(e, 'g', -1, 64)
44 }
45 }
46 s += "}"
47 return s
48 }
49
View as plain text