6章ポインタ

変数と関数について説明しましたので、次はポインタです。その後でGo言語におけるポインタの振る舞いを、ほかの言語におけるクラスの振る舞いと比較し、ポインタをいつどのように使うべきかを説明します。メモリ割り当てについても説明しますので、ポインタを正しく使うとGoプログラムがより速く、より効率的になることが理解できるはずです。

6.1 ポインタ入門

ポインタとは、ある値が保存されているメモリ内の位置を表す変数です。図6-1は、次のコードで変数がメモリに保存される様子を示したものです。

var x int32 = 10
var y bool = true
メモリ内に変数を保存

図6-1 メモリ内に変数を保存

どの変数も、1バイトもしくは何バイトか連続したメモリに保存されており、その位置のことを「アドレス」と呼びます。変数の型が違えば、保存に必要なメモリの量も異なります。上の例では2つの変数を示していますが、xは32ビット整数で、yはブール値(真偽値)です。32ビット整数の保存には4バイトが必要ですから、xの値は4バイトを使って記憶され、(この図の場合)アドレスは1から始まって4で終わります。ブール値は1バイトしか必要としません(真偽を表すには1ビットだけでよいのですが、個別にアクセスできるメモリの最小単位はバイトなのです)。ですからyの値はアドレス5の1バイトに保存され、true1という値で表されます。

ポインタも変数であることに変わりはなく、その中身が「別の変数が保存されているアドレス」というだけの話です。 ...

Get 初めてのGo言語 ―他言語プログラマーのためのイディオマティックGo実践ガイド now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.