string.go 609 B

1234567891011121314151617181920212223242526272829303132333435
  1. package serial
  2. import (
  3. "fmt"
  4. "strings"
  5. )
  6. // ToString serializes an arbitrary value into string.
  7. func ToString(v interface{}) string {
  8. if v == nil {
  9. return ""
  10. }
  11. switch value := v.(type) {
  12. case string:
  13. return value
  14. case *string:
  15. return *value
  16. case fmt.Stringer:
  17. return value.String()
  18. case error:
  19. return value.Error()
  20. default:
  21. return fmt.Sprintf("%+v", value)
  22. }
  23. }
  24. // Concat concatenates all input into a single string.
  25. func Concat(v ...interface{}) string {
  26. builder := strings.Builder{}
  27. for _, value := range v {
  28. builder.WriteString(ToString(value))
  29. }
  30. return builder.String()
  31. }