unsafe.go 378 B

12345678910111213141516171819202122
  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) []byte {
  11. sh := (*reflect.StringHeader)(unsafe.Pointer(&s))
  12. bh := reflect.SliceHeader{
  13. Data: sh.Data,
  14. Len: sh.Len,
  15. Cap: sh.Len,
  16. }
  17. return *(*[]byte)(unsafe.Pointer(&bh))
  18. }