0
0

Go言語(Golang) ポインタとアドレス演算子について

Posted at

*(ポインタ)

  • 意味: *はポインタ型を示します。ポインタは、変数のメモリアドレスを指し示すための型です。
  • 使い方: 変数のポインタを取得したり、ポインタを使ってデータにアクセスしたりします。

var x int = 10
var p *int = &x // xのポインタを取得

ここで、pxのメモリアドレスを持つポインタです。

&(アドレス演算子)

  • 意味: &は変数のアドレスを取得するための演算子です。変数のメモリアドレスを返します。
  • 使い方: 変数のアドレスを取得してポインタに代入する際に使用します。

var x int = 10
var p *int = &x // xのアドレスを取得

ここで、pxのアドレスを持つポインタです。

コード内での使用

あなたのコード内での*&の使用に関して具体的に見てみましょう。

return &UserNotFound{Username: "mike"}
  • &UserNotFound{...}: UserNotFoundのインスタンスを生成し、そのポインタを返しています。この場合、UserNotFoundのポインタを返すことで、エラーを呼び出した側でそのインスタンスにアクセスできるようにしています。
func (e *UserNotFound) Error() string {
	return e.Username
}
  • (e *UserNotFound): UserNotFoundのポインタ型を受け取るメソッドです。ポインタを使うことで、メソッド内で構造体のフィールドを変更することができ、またメモリ効率も良くなります。

まとめ

  • *はポインタ型を示し、ポインタを使用することでメモリアドレスにアクセスします。
  • &は変数のアドレスを取得するために使用され、そのアドレスをポインタに格納します。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0