| 123456789101112131415161718192021222324 |
- //go:build !go1.20
- package utils
- import (
- "reflect"
- "unsafe"
- )
- const MaxStringLen = 0x7fff0000 // Maximum string length for UnsafeBytes. (decimal: 2147418112)
- // UnsafeBytes returns a byte pointer without allocation.
- // String length shouldn't be more than 2147418112.
- //
- //nolint:gosec // unsafe is used for better performance here
- func UnsafeBytes(s string) []byte {
- if s == "" {
- return nil
- }
- return (*[MaxStringLen]byte)(unsafe.Pointer(
- (*reflect.StringHeader)(unsafe.Pointer(&s)).Data),
- )[:len(s):len(s)]
- }
|