| commit | 05fbef0ca5da472bbf96c9322b84a53edc03c9fd | [log] [tgz] |
|---|---|---|
| author | Tao Wen <taowen@gmail.com> | Tue Mar 20 13:32:07 2018 |
| committer | Tao Wen <taowen@gmail.com> | Tue Mar 20 13:32:07 2018 |
| tree | ca8cd08ddf2138ad8cfd62e98ef247dc934c36b8 | |
| parent | 0b92968f4be75033e2089fba355a691ea2e9c5cc [diff] |
add UnsafeCastString
diff --git a/reflect2.go b/reflect2.go index ac13ad6..0632b71 100644 --- a/reflect2.go +++ b/reflect2.go
@@ -283,3 +283,13 @@ x := uintptr(p) return unsafe.Pointer(x ^ 0) } + +func UnsafeCastString(str string) []byte { + stringHeader := (*reflect.StringHeader)(unsafe.Pointer(&str)) + sliceHeader := &reflect.SliceHeader{ + Data: stringHeader.Data, + Cap: stringHeader.Len, + Len: stringHeader.Len, + } + return *(*[]byte)(unsafe.Pointer(sliceHeader)) +}