Bernadette Akinyi

やあ、Techieさん!🌸

私のGoシリーズへようこそ!ここでは、私が学んだことをわかりやすく共有していく予定です。自分が犯したミスや、「あっ!」と理解が深まる瞬間も含めてお伝えします。Goを学んでいる方でも、ただ興味がある方でも、何か得られるものがあれば嬉しいです。

コメント欄に皆さんの知見や経験をぜひ共有してください。

今日のトピックは... ドラムロール、よろしく! スライス。早速見ていきましょう!

スライスとは一体何なのか?

Goのスライスを初めて見たとき、私は配列の別名だと思っていました。ところが、そうではなかったのです!

スライスは、基盤となる配列への動的なビューです。内部的には、スライスヘッダーと呼ばれる小さなデータ構造で表現されています。スライスヘッダーは、要素自体を格納するのではなく、基盤となる配列へのポインタと、その長さ容量を保持します。この仕組みを理解したことで、スライスを変更すると元の配列も変更される理由がわかりました。

もう一つ興味深く便利な点は、固定サイズの配列と比べてスライスの柔軟性が高いことです。スライスはappend()などの関数を使って拡張したり、リスライスして基盤となる配列の一部だけを扱ったりできます。この柔軟性こそが、Goでスライスが頻繁に使われる理由のひとつです。