util_unsafe.go 378 B

12345678910111213141516171819202122
  1. //go:build !purego
  2. // +build !purego
  3. package ws
  4. import (
  5. "reflect"
  6. "unsafe"
  7. )
  8. func strToBytes(str string) (bts []byte) {
  9. s := (*reflect.StringHeader)(unsafe.Pointer(&str))
  10. b := (*reflect.SliceHeader)(unsafe.Pointer(&bts))
  11. b.Data = s.Data
  12. b.Len = s.Len
  13. b.Cap = s.Len
  14. return bts
  15. }
  16. func btsToString(bts []byte) (str string) {
  17. return *(*string)(unsafe.Pointer(&bts))
  18. }