低レベルのプロジェクトにGoを使用し、データのコピーを避けたいです。
私は固定サイズの構造体を持っています:
type myStruct struct {
a uint8
b uint8
}
バイトのスライスが何もコピーせずに構造体であるかのように値を読み取るためにpointer of my struct
、これをキャストしslice of bytes
ます。
data := []byte{69,0}
var obj *myStruct
//something like:
obj = myStruct(data)
// or
obj = &myStruct(data)
Cでは次のようになります。 obj = (struct myStruct*) data;
[]バイトのオフセットとインデックスの使用を無効にしたいと思います。
スライスは固定メモリではないので、[]byte
固定配列に変換することで可能になると思いますbyte[0:2]
。
バイトスライスの最初の要素へのポインタunsafe.Pointer
を*myStruct
渡すようにキャストできます。
import "unsafe"
...
obj = (*myStruct)(unsafe.Pointer(&data[0]))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加