unsafe.go 356 B

1234567891011121314151617181920
  1. package fasttemplate
  2. import (
  3. "reflect"
  4. "unsafe"
  5. )
  6. func unsafeBytes2String(b []byte) string {
  7. return *(*string)(unsafe.Pointer(&b))
  8. }
  9. func unsafeString2Bytes(s string) []byte {
  10. sh := (*reflect.StringHeader)(unsafe.Pointer(&s))
  11. bh := reflect.SliceHeader{
  12. Data: sh.Data,
  13. Len: sh.Len,
  14. Cap: sh.Len,
  15. }
  16. return *(*[]byte)(unsafe.Pointer(&bh))
  17. }