123456789101112131415161718192021222324252627282930 |
- package sqltypes
- import (
- "reflect"
- "unsafe"
- )
- // BytesToString casts slice to string without copy
- func BytesToString(b []byte) (s string) {
- if len(b) == 0 {
- return ""
- }
- bh := (*reflect.SliceHeader)(unsafe.Pointer(&b))
- sh := reflect.StringHeader{Data: bh.Data, Len: bh.Len}
- return *(*string)(unsafe.Pointer(&sh))
- }
- // StringToBytes casts string to slice without copy
- func StringToBytes(s string) []byte {
- if len(s) == 0 {
- return []byte{}
- }
- sh := (*reflect.StringHeader)(unsafe.Pointer(&s))
- bh := reflect.SliceHeader{Data: sh.Data, Len: sh.Len, Cap: sh.Len}
- return *(*[]byte)(unsafe.Pointer(&bh))
- }
|