Hunter0x7c7
2022-08-11 a82f9cb69f63aaeba40c024960deda7d75b9fece
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
package serial
 
import (
    "fmt"
    "strings"
)
 
// ToString serialize an arbitrary value into string.
func ToString(v interface{}) string {
    if v == nil {
        return ""
    }
 
    switch value := v.(type) {
    case string:
        return value
    case *string:
        return *value
    case fmt.Stringer:
        return value.String()
    case error:
        return value.Error()
    default:
        return fmt.Sprintf("%+v", value)
    }
}
 
// Concat concatenates all input into a single string.
func Concat(v ...interface{}) string {
    builder := strings.Builder{}
    for _, value := range v {
        builder.WriteString(ToString(value))
    }
    return builder.String()
}