1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Goにおけるポインタの使い方と使い所のブラッシュアップ

1
Posted at

Goにおけるポインタがよくわからなかったので、とりあえず使い方がわかったので、疑問点と一緒にアウトプットしようと思う。何か間違っている点がありましたら、恐れ多いのですがご指摘宜しくお願い致します。

記事の目標

この記事を読むことでGoにおけるポインタの概念を理解できる。

疑問点

  • 使い所はどこか?
  • なぜアドレスみたりできるのか、変数など直接取得すればいいのではないか?

(上記二つは調査中。。。)

前提知識

ポインタを理解するにはどうやら前提知識が必要そうだ。以下はこちらの記事から引用させていただきました。以下は変数とメモリとアドレスの説明です。

  • メモリは、1バイト毎に番号がつけられ、区別されています。
  • 変数は実行ファイルになると、番号が割り当てられます。
  • 変数は、メモリ上の該当の番号の区分に格納され、記憶されます。
  • この変数に付与されるメモリの区分番号がアドレス(16進数)です。
main.go
func main() {
	test := "test"

	fmt.Println(about)
 }

上記の関数内に定義されている変数testもアドレス情報を持っている。

ポインタはアドレス情報のことを示している。上記を実行すると変数testに格納されているtestが出力される。変数testのアドレス情報を出力するには下記のように記述する。

main.go
package main

import (
	"fmt"
)

func main() {
	test := "test"
	var pointer *string = &test

	fmt.Println(test)
	fmt.Println(pointer)
}

↓出力結果

//go run main.go

test
0x1400008e020

のようにアドレス情報が得られる。アドレス情報から変数の値にアクセスすることもできます。青の場合は以下のように*pointerと記述するだけで取得することができます。

main.go
package main

import (
	"fmt"
)

func main() {
	test := "test"
	var pointer *string = &test

	fmt.Println(test)
	fmt.Println(*pointer)
}

上記の使い方となんとなくの概念を理解できたため、次はこちらを用いてどのような場面で用いるのかなどキャッチアップしていきたいと思います。

参考記事

1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?