構造体のポインタで[]バイトをキャストするにはどうすればよいですか?

アレクシス:

低レベルのプロジェクトに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]

har07:

バイトスライスの最初の要素へのポインタunsafe.Pointer*myStruct渡すようにキャストできます。

import "unsafe"
...
obj = (*myStruct)(unsafe.Pointer(&data[0]))

テスト:https : //play.golang.org/p/c7XO3dPKcLu

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ある構造体を同じメンバーを持つ別のタイプにキャストするにはどうすればよいですか?

分類Dev

従来のCAPIを呼び出すときに、最新のC ++で構造体へのポインターを他の構造体へのポインターに正しくキャストするにはどうすればよいですか?

分類Dev

jsonb列をスキャンして構造体/ポインタのスライスにするにはどうすればよいですか?

分類Dev

LRESULTをカスタム構造体タイプにキャストするにはどうすればよいですか?

分類Dev

構造体へのポインタへのポインタのメンバーにアクセスするにはどうすればよいですか?

分類Dev

構造体へのポインタの配列を作成するにはどうすればよいですか?

分類Dev

Cの構造体へのポインタを逆参照するにはどうすればよいですか?

分類Dev

Cで構造体なしでネストされたダブルポインタを作成するにはどうすればよいですか?

分類Dev

Cの構造体にポインタを割り当てるにはどうすればよいですか?

分類Dev

スレッド間でファントムポインタを含む構造体を共有するにはどうすればよいですか?

分類Dev

ポインタと配列を使用してネストされた構造体にアクセスするにはどうすればよいですか?

分類Dev

ネストされた構造体でポインタを参照するにはどうすればよいですか?

分類Dev

整数へのポインタのキャストを修正するにはどうすればよいですか?

分類Dev

C ++で構造体へのポインターのベクトルを使用するにはどうすればよいですか?

分類Dev

isizeに構造体参照をキャストするにはどうすればよいですか?

分類Dev

構造体初期化子でポインタ型を使用するにはどうすればよいですか?

分類Dev

マップで構造体ポインタを使用するにはどうすればよいですか?

分類Dev

Racketでコンパイル時の構造体メタデータを提供しながら構造体コンストラクターをオーバーライドするにはどうすればよいですか?

分類Dev

UPDATEステートメントでIFタイプの構造体を使用するにはどうすればよいですか?

分類Dev

構造体にnullポインタを作成するにはどうすればよいですか?

分類Dev

構造体を物理的に作成せずに、構造体のReflect.Typeインスタンスを取得するにはどうすればよいですか?

分類Dev

matchステートメントでインスタンス化された構造体値を使用するにはどうすればよいですか?

分類Dev

構造体へのポインタを持つ構造体フィールドを取得するにはどうすればよいですか?

分類Dev

構造体へのポインタのメンバーにアクセスするにはどうすればよいですか?

分類Dev

構造体へのポインタを保持するグローバル配列を初期化するにはどうすればよいですか?

分類Dev

golangのスライスから構造体ポインタを取得するにはどうすればよいですか

分類Dev

使用されている場所でマクロのインポート/使用構造体を作成するにはどうすればよいですか?

分類Dev

Windows Phone 8でキャンバス内のタップされたポイントの線を削除するにはどうすればよいですか?

分類Dev

構造体の配列でintポインタメンバーを初期化して動的に割り当てるにはどうすればよいですか?

Related 関連記事

  1. 1

    ある構造体を同じメンバーを持つ別のタイプにキャストするにはどうすればよいですか?

  2. 2

    従来のCAPIを呼び出すときに、最新のC ++で構造体へのポインターを他の構造体へのポインターに正しくキャストするにはどうすればよいですか?

  3. 3

    jsonb列をスキャンして構造体/ポインタのスライスにするにはどうすればよいですか?

  4. 4

    LRESULTをカスタム構造体タイプにキャストするにはどうすればよいですか?

  5. 5

    構造体へのポインタへのポインタのメンバーにアクセスするにはどうすればよいですか?

  6. 6

    構造体へのポインタの配列を作成するにはどうすればよいですか?

  7. 7

    Cの構造体へのポインタを逆参照するにはどうすればよいですか?

  8. 8

    Cで構造体なしでネストされたダブルポインタを作成するにはどうすればよいですか?

  9. 9

    Cの構造体にポインタを割り当てるにはどうすればよいですか?

  10. 10

    スレッド間でファントムポインタを含む構造体を共有するにはどうすればよいですか?

  11. 11

    ポインタと配列を使用してネストされた構造体にアクセスするにはどうすればよいですか?

  12. 12

    ネストされた構造体でポインタを参照するにはどうすればよいですか?

  13. 13

    整数へのポインタのキャストを修正するにはどうすればよいですか?

  14. 14

    C ++で構造体へのポインターのベクトルを使用するにはどうすればよいですか?

  15. 15

    isizeに構造体参照をキャストするにはどうすればよいですか?

  16. 16

    構造体初期化子でポインタ型を使用するにはどうすればよいですか?

  17. 17

    マップで構造体ポインタを使用するにはどうすればよいですか?

  18. 18

    Racketでコンパイル時の構造体メタデータを提供しながら構造体コンストラクターをオーバーライドするにはどうすればよいですか?

  19. 19

    UPDATEステートメントでIFタイプの構造体を使用するにはどうすればよいですか?

  20. 20

    構造体にnullポインタを作成するにはどうすればよいですか?

  21. 21

    構造体を物理的に作成せずに、構造体のReflect.Typeインスタンスを取得するにはどうすればよいですか?

  22. 22

    matchステートメントでインスタンス化された構造体値を使用するにはどうすればよいですか?

  23. 23

    構造体へのポインタを持つ構造体フィールドを取得するにはどうすればよいですか?

  24. 24

    構造体へのポインタのメンバーにアクセスするにはどうすればよいですか?

  25. 25

    構造体へのポインタを保持するグローバル配列を初期化するにはどうすればよいですか?

  26. 26

    golangのスライスから構造体ポインタを取得するにはどうすればよいですか

  27. 27

    使用されている場所でマクロのインポート/使用構造体を作成するにはどうすればよいですか?

  28. 28

    Windows Phone 8でキャンバス内のタップされたポイントの線を削除するにはどうすればよいですか?

  29. 29

    構造体の配列でintポインタメンバーを初期化して動的に割り当てるにはどうすればよいですか?

ホットタグ

アーカイブ