string.go 682 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package serial
  2. import (
  3. "fmt"
  4. "strings"
  5. )
  6. func ToString(v interface{}) string {
  7. if v == nil {
  8. return " "
  9. }
  10. switch value := v.(type) {
  11. case string:
  12. return value
  13. case *string:
  14. return *value
  15. case fmt.Stringer:
  16. return value.String()
  17. case error:
  18. return value.Error()
  19. case []byte:
  20. return BytesToHexString(value)
  21. default:
  22. return fmt.Sprintf("%+v", value)
  23. }
  24. }
  25. func Concat(v ...interface{}) string {
  26. values := make([]string, len(v))
  27. for i, value := range v {
  28. values[i] = ToString(value)
  29. }
  30. return strings.Join(values, "")
  31. }
  32. func WriteString(s string) func([]byte) (int, error) {
  33. return func(b []byte) (int, error) {
  34. return copy(b, []byte(s)), nil
  35. }
  36. }