(i interface{})
| 576 | } |
| 577 | |
| 578 | func interfaceToString(i interface{}) (string, error) { |
| 579 | switch v := i.(type) { |
| 580 | case nil: |
| 581 | return "", nil |
| 582 | case string: |
| 583 | return v, nil |
| 584 | case []byte: |
| 585 | return string(v), nil |
| 586 | case int: |
| 587 | return strconv.FormatInt(int64(v), 10), nil |
| 588 | case float64: |
| 589 | return strconv.FormatFloat(v, 'f', -1, 64), nil |
| 590 | case bool: |
| 591 | return strconv.FormatBool(v), nil |
| 592 | default: // just try to JSON-encode it. |
| 593 | var sb strings.Builder |
| 594 | if err := json.NewEncoder(&sb).Encode(i); err != nil { |
| 595 | return "", xerrors.Errorf("convert %T: %w", v, err) |
| 596 | } |
| 597 | return strings.TrimSpace(sb.String()), nil |
| 598 | } |
| 599 | } |
no test coverage detected