エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
実装して理解するスライス #golang - Qiita
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
実装して理解するスライス #golang - Qiita
つまり、Goのスライスは次の図のように、配列へのポインタと長さと容量を持った値として表現されていま... つまり、Goのスライスは次の図のように、配列へのポインタと長さと容量を持った値として表現されています。 runtimeとreflectパッケージでポインタがunsafe.Pointerとuintptrで表現方法は違いますが、どちらもポインタを表す値です。 unsafe.Pointerは任意型のポインタと相互変換可能な型です。一方で、uintptrは整数型でunsafe.Pointerに変換が可能な型です。uintptrは整数型の1つなので、int型などと同様に四則演算が可能です。 次のように、[]int型をreflect.SliceHeader型として解釈してみます。 まず、[]int型の変数であるnsのポインタを取り、unsafe.Pointer型に変換します。 変換した値はptrという変数に入れています。 次に、ptrを*reflect.Slice型にキャストし、そのポインタが指す先の