😸

Golang ポインタにいてのメモ

2022/11/12に公開

はじめに

Go言語におけるポインタについてのメモを記載しています。

ポインタ

ポインタとは、ある値が保存されているメモリ内の位置を表す変数。
どの変数も、1バイトもしくは何バイトか連続したメモリに保存されており、
その場所のことを 「アドレス」と読んでいる。

変数の型が異なれば使うメモリのサイズは異なるが、ポインタはどのような型を参照してもサイズは同じ。

ポインタはミュータブルの印である。

Goは値渡しの言語であるため、関数から渡される値はコピーです。

アドレス演算子

アドレス演算子は、「&」で表せれ、変数の前につけるとその変数のアドレスを返す。

x := "hello"
pointerX := &x // ポインタ型

デリファレンス

「*」をポインタ型の変数の前につけるとアドレスが保存されている値を返す。
これをデリファレンスと呼ぶ。

nilポインタをデリファレンスするとパニックが発生する。

ポインタ型の変数をvarを使って宣言する際は、下記のように*をつける。

var y *int

参考

https://www.oreilly.co.jp/books/9784814400041/

Discussion