Go では、スライスは基になる配列への参照であり、そのヘッダーにはスライスに関する重要な情報が含まれています。スライス引数の内容は関数によって変更できますが、ヘッダーは変更できません。スライスのヘッダーを検査するには、その構造に隠された詳細を詳しく調べることができます。
スライス ヘッダーは、reflect.SliceHeader タイプによって定義され、Data、Len、Cap の 3 つのフィールドで構成されます。安全でないパッケージを使用して、スライス ポインタを *reflect.SliceHeader に変換できます:
sh := (*reflect.SliceHeader)(unsafe.Pointer(&newSlice2))
スライス ヘッダーを取得したら、そのフィールドに直接アクセスできます:
を通じてアクセスできます。fmt.Printf(% v, sh) を使用して SliceHeader 値を出力すると、次の出力が得られます。
&{Data:1792106 Len:8 Cap:246}
これは、newSlice2 がメモリ アドレスに格納されているデータを指していることを示しています。 1792106、長さは 8、容量は 246 です。
結論として、スライスのヘッダーは直接変更できませんが、reflect.SliceHeader への変換や、 &newSlice2[0] や len(newSlice2) などの間接メソッドを使用して、特定のフィールドを取得します。
以上がGo スライスのヘッダーを検査するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。