golang struct 和 byte互转
Posted yyrise
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang struct 和 byte互转相关的知识,希望对你有一定的参考价值。
相比于encoding, 使用unsafe性能更高
type MyStruct struct { A int B int } var sizeOfMyStruct = int(unsafe.Sizeof(MyStruct{})) func MyStructToBytes(s *MyStruct) []byte { var x reflect.SliceHeader x.Len = sizeOfMyStruct x.Cap = sizeOfMyStruct x.Data = uintptr(unsafe.Pointer(s)) return *(*[]byte)(unsafe.Pointer(&x)) } func BytesToMyStruct(b []byte) *MyStruct { return (*MyStruct)(unsafe.Pointer( (*reflect.SliceHeader)(unsafe.Pointer(&b)).Data, )) }
以上是关于golang struct 和 byte互转的主要内容,如果未能解决你的问题,请参考以下文章
golang struct, map, json 之间的相互转换
golang 基础 —— 字符串 与 int int64 互转