1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package internal
- import (
- "fmt"
- "strconv"
- "time"
- )
- func AppendArg(b []byte, v interface{}) []byte {
- switch v := v.(type) {
- case nil:
- return append(b, "<nil>"...)
- case string:
- return appendUTF8String(b, Bytes(v))
- case []byte:
- return appendUTF8String(b, v)
- case int:
- return strconv.AppendInt(b, int64(v), 10)
- case int8:
- return strconv.AppendInt(b, int64(v), 10)
- case int16:
- return strconv.AppendInt(b, int64(v), 10)
- case int32:
- return strconv.AppendInt(b, int64(v), 10)
- case int64:
- return strconv.AppendInt(b, v, 10)
- case uint:
- return strconv.AppendUint(b, uint64(v), 10)
- case uint8:
- return strconv.AppendUint(b, uint64(v), 10)
- case uint16:
- return strconv.AppendUint(b, uint64(v), 10)
- case uint32:
- return strconv.AppendUint(b, uint64(v), 10)
- case uint64:
- return strconv.AppendUint(b, v, 10)
- case float32:
- return strconv.AppendFloat(b, float64(v), 'f', -1, 64)
- case float64:
- return strconv.AppendFloat(b, v, 'f', -1, 64)
- case bool:
- if v {
- return append(b, "true"...)
- }
- return append(b, "false"...)
- case time.Time:
- return v.AppendFormat(b, time.RFC3339Nano)
- default:
- return append(b, fmt.Sprint(v)...)
- }
- }
- func appendUTF8String(dst []byte, src []byte) []byte {
- dst = append(dst, src...)
- return dst
- }
|