fasthttp关于string和[]byte的转换方式和大家平常普遍使用的方式不一样,fasthttp转换实现如下:
//[]byte转string
func b2s(b []byte) string {
return *(*string)(unsafe.Pointer(&b))
}
//string转[]byte
func s2b(s string) (b []byte) {
bh := (*reflect.SliceHeader)(unsafe.Pointer(&b))
sh := (*reflect.StringHeader)(unsafe.Pointer(&s))
bh.Data = sh.Data
bh.Cap = sh.Len
bh.Len = sh.Len
return b
}
为什么不用我们常见的string和[]byte的转换方式呢?这样做是怎么提高性能的呢?...
带着这些疑问,今天将分享下并总结string和[]byte的转换方式,不同的转换方式之间的实现和区别!
两种转换方式
如果此时此刻你刚好遇到面试官问你string和[]byte如何进行转换,有几种方式?你能答上来吗