ホームページ >バックエンド開発 >Golang >Go スライスのヘッダーを検査するにはどうすればよいですか?

Go スライスのヘッダーを検査するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-25 22:39:13215ブラウズ

How Can I Inspect the Header of a Go Slice?

スライス ヘッダーの検査

Go では、スライスは基になる配列への参照であり、そのヘッダーにはスライスに関する重要な情報が含まれています。スライス引数の内容は関数によって変更できますが、ヘッダーは変更できません。スライスのヘッダーを検査するには、その構造に隠された詳細を詳しく調べることができます。

スライス ヘッダーは、reflect.SliceHeader タイプによって定義され、Data、Len、Cap の 3 つのフィールドで構成されます。安全でないパッケージを使用して、スライス ポインタを *reflect.SliceHeader に変換できます:

sh := (*reflect.SliceHeader)(unsafe.Pointer(&newSlice2))

スライス ヘッダーを取得したら、そのフィールドに直接アクセスできます:

  • Data &newSlice2[0]
  • Len を使用して取得できます。 len(newSlice2)
  • Cap には cap(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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。