unsafe.go 375 B

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